Java正则表达式【详解】

简介: Java正则表达式【详解】

一、什么是正则表达式

正则表达式是一组公式,是描述一种字符串匹配的格式。


正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。。我们可以调用String中的matches(String regex)方法,判断字符串是否匹配给定的正则表达式,返回布尔值。


示例:

str.matches("[a-z]") 表示字符串是否是小写字母a-z中的某一字母

二、正则表达式元字符

正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,"\\d" 表示数0~9中的任何一个,"\\d" 就是元字符。

元字符 正则表达式中的写法 意义
. "." 代表任意一个字符
\\d "\\d" 代表0~9的任何一个数字
\D "\\D" 代表任何一个非数字字符
\s "\\s" 代表空白字符,如“\t”、“\n”
\S "\\S" 代表非空白字符
\w "\\w" 代表可用做标识符的字符,但不包括“$”
\W "\\W" 代表不可用于标识符的字符
\p{Lower} \p{Lower} 代表小写字母a~z
\p{Upper} \p{Upper} 代表大写字母A~Z
\p{ASCII} \p{ASCII} ASCII字符
\p{Alpha} \p{Alpha} 字母字符
\p{Digit} \p{Digit} 十进制数字,即0~9
\p{Alnum} \p{Alnum} 数字或字母字符
\p{Punct} \p{Punct} 标点符号:!"#$%'()+,-./:;<=>?@[\]^_`{|}~
\p{Graph} \p{Graph} 可见字符:[\p{Alnum\p{Punct}}]
\p{Print} \p{Print} 可打印字符:[\p{Graph}\X20]
\p{Blank} \p{Blank} 空格或制表符:[\t]
\p{Cntrl} \p{Cntrl} 控制字符:[\x00-\x1F\x7F]

三、正则表达还是元字符使用方法

在正则表达式中可以使用方括号括起来若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。


例如,reg=“[abc]4”,这样字符串“a4”、“b4”、·“c4”都是和正则表达式匹配的字符串。除此之外还有很多格式。如:

[^456]:代表4、5、6之外的任何字符。
[a-r]:代表a~r中的任何一个字母。
[a-zA-Z]:可表示任意一个英文字母。
[a-e[g-z]]:代表a~e,或g~z中的任何一个字母(并运算)。
[a-o&&[def]]:代表字母d、e、f(交运算)。
[a-d&&[^bc]]:代表字母a、d(差运算)。
  (ab)|(13)|(50):代表”ab”、”13”、”50”中任意一值。

四、正则表达式限定符

在正则表达式中允许使用限定修饰符来限定元字符出现的次数。例如,"A*"代表A可在字符串中出现0次或多次。

限定修饰符 意义 示例
0次或1次 A?
* 0次或多次 A*
+ 一次或多次 A+
{n} 正好出现n次 A{2}
{n,} 至少出现n次 A{3,}
{n,m} 出现n次到m次 A{2,6}

正则表达式实例使用正则表达式来判断指定的变量是否是合法的E-mail地址。


设计思路:

[邮箱名]     @  [服务器名称]  [中间名] .  [后缀]
合法字符串@  合法字符串. 字符串(可无). 字符串(最大三个字符)
  \\w+         @    \\w+       \\.*\\w{2,3}*   \\.      \\w{2,3}

五、正则表达式示例

验证字符串是不是大陆手机号,大陆手机号是11位,前三位分别是130、131、132、133、134、134、135、136、137、138、139、150、151、152、153、155、156、157、158、159、180、185、186、187、188、189等


代码:

import java.util.Scanner;
public class lianxi {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入手机号:");
    String regex = "(13[0-9]|15[012356789]|18[056789])\\d{8}";
    while (true) {
      String phone = sc.nextLine();
      if (phone.matches(regex)) {
        System.out.println("您输入的是手机号");
      } else {
        System.out.println("您输入的不是手机号");
      }
    }
  }
}

运行结果:

3b98fd43e5724172ab696d599c8e0cee.png

目录
相关文章
|
2月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
367 211
|
2月前
|
安全 Java
Java中的Switch表达式:更简洁的多路分支
Java中的Switch表达式:更简洁的多路分支
448 211
|
15天前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
131 1
|
2月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
3月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
261 14
|
2月前
|
Java 编译器
Java 17 Switch表达式:更简洁、更强大的流程控制
Java 17 Switch表达式:更简洁、更强大的流程控制
|
3月前
|
设计模式 数据采集 Java
Java正则表达式的基础知识,进阶至熟练掌握。
通过大量的练习来熟悉它们的识别模式、如何设计模式来解决实际问题,才能够逐步达到熟练掌握。更多的是通过实践、编写代码和解决真实问题来完善技能。在这方面,没有快速的捷径,唯有刻意练习和长时间的代码实践。
86 0
|
4月前
|
SQL JSON 安全
Java 8 + 中 Lambda 表达式与 Stream API 的应用解析
摘要:本文介绍了Java 8+核心新特性,包括Lambda表达式与Stream API的集合操作(如过滤统计)、函数式接口的自定义实现、Optional类的空值安全处理、接口默认方法与静态方法的扩展能力,以及Java 9模块化系统的组件管理。每个特性均配有典型应用场景和代码示例,如使用Stream统计字符串长度、Optional处理Map取值、模块化项目的依赖声明等,帮助开发者掌握现代Java的高效编程范式。(150字)
91 1
|
6月前
|
缓存 监控 Java
深入解析java正则表达式
本文深入解析Java正则表达式的应用,从基础概念到实际开发技巧全面展开。正则表达式是一种强大的文本处理工具,广泛应用于格式验证、搜索替换等场景。Java通过`Pattern`和`Matcher`类支持正则表达式,`Pattern.compile()`方法将正则字符串编译为高效模式对象。文章详细介绍了核心类的功能、常用正则语法及实际案例(如邮箱和电话号码验证)。掌握这些内容,可显著提升文本处理能力,满足多种开发需求。
224 1