JavaSE进阶之Regex:正则表达式

1.用途

正则表达式用于输入字符串的校验,可极大简化代码的书写,经常应用于用户输入比如电话、邮箱、身份证号等内容的校验,属于Java开发必学内容。

2.用法

将字符串的限定规则Rule写成字符串形式,字符串的内容是正则表达式。被校验字符串Str调用String类的成员方法boolean mathces(String Regex),将Rule传入,可对Str进行校验。校验成功返回true,否则返回false。

相对于普通的逻辑判断“1.字符串长度在(6,20)中;2.字符串内容是数字”,显得非常简洁。

3.正则表达式中符号的含义

为了解正则表达式的使用,必须知道其中的符号对应的含义。

3.1单个字符的匹配规则1:字符类C

用中括号[]将字符围起来,表示被比较字符的该位置处必须是中括号中的内容。如[a]表示该位置处必须是字符a。

[]中的字符可以有多个,由此产生如下规则(直接举例说明含义):

[abc]是一个字符,表示只能是a,b,c其中一个

[^abc]表示非a且非b且非c,即对[abc]数学逻辑上取反

[a-d]表示a,b,c,d其中任意一个

[a-zA-Z]表示是a到z或A到Z其中一个,即26个字母之一,不同类型(大小写)可用[]进行分离,但含义不变,[a-zA-Z]=[a-z[A-Z]]

[a-d&&[^c]]表示a,b,d其中一个,对c进行了排除,&&:且

[a-d&&[^b-c]]表示a,d,对b,c进行了排除。

-和&&的作用范围是其本身左右两边的内容,^的作用范围是其本身右边的内容,[]表示一个已完成的表达式,[]可以进行嵌套使用,如[a-d&&[^b-c]]。

3.2单个字符的匹配规则2:预定义类Y

.匹配任意字符

d 表示[0-9],即一个数字

D表示[^0-9],即非数字

s表示空白字符,即空格

S表示非空格

w表示当前字符属于英文、数字和下划线其中的一类,即单词

W表示非单词字符

3.3贪婪量词(对单个字符的个数进行校验)

上述两类都是对字符的内容进行校验,贪婪量词则对字符出现的次数进行了校验。

设已有单个字符的匹配规则X,X取C或者Y(即前面两类),X出现的次数为count有如下定义

X? 表示1次或0次,即count∈{0,1}

X* 表示0次或无数次,即count∈[0,+∞}

X+ 表示一次或多次,即count∈[1,+∞}

X{n} 表示正好n次,即count=n

X{n,}表示至少n次,即count∈[n,+∞)

X{m,n}表示至少m但不超过n,即count∈[m,n)

特殊字符 . 和 需要在符号前加上斜杠进行转义,否则不生效.

经验分享 程序员 微信小程序 职场和发展