什么是正则表达式
正则表达式是一种强大的工具,用于匹配和识别文本模式。
下面是一个基本的介绍:
这些是锚定字符,分别匹配字符串的开头和结尾。例如,^Hello
匹配以 “Hello” 开头的字符串,end$
匹配以 “end” 结尾的字符串。
.: 点号匹配任何单个字符(除了换行符 \n
)。
[ ]: 方括号内放置字符集合,匹配其中任何一个字符。比如,[abc]
匹配字符 ‘a’、‘b’ 或 ‘c’ 中的任意一个。
[^ ]: 方括号内的 ^ 放在开头时,表示取反,匹配除了方括号内字符之外的任何字符。
\d, \w, \s: 分别匹配数字、字母数字下划线(单词字符)、空白字符(空格、制表符等)。
\D, \W, \S: 这些是对应小写字符的反义,匹配非数字、非单词字符、非空白字符。
\b, \B: 单词边界(单词开头或结尾)和非单词边界。
{ }, *, +, ?: 用于指定重复次数。
{n}
:匹配前面的元素恰好 n 次。{n,}
:匹配前面的元素至少 n 次。{n,m}
:匹配前面的元素至少 n 次,最多 m 次。*
:匹配前面的元素零次或多次。+
:匹配前面的元素一次或多次。?
:匹配前面的元素零次或一次(可选)。|: 管道符表示“或”的意思,匹配两个模式之一。比如,cat|dog
匹配 “cat” 或 “dog”。
( ): 用于创建捕获组,可以提取匹配的部分。
这些是正则表达式中常用的一些基本元素,结合它们可以构建复杂的模式来匹配各种文本。
举例:正则表达式—手机号码
这段代码是一个用来验证手机号码格式的正则表达式。让我们来解释一下它的结构和含义:
public static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$";
^
: 正则表达式的开始位置锚定,用于匹配字符串的开头。1
: 匹配手机号码的开头,中国手机号码通常以1开头。([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])
: 这部分是手机号码的第二位数字的模式匹配。它是一个分组,匹配了不同开头的手机号码数字规则。
[38][0-9]
: 匹配以3或8开头的数字后接任意数字。4[579]
: 匹配以4开头的数字后接5、7、或9中的一个数字。5[0-3,5-9]
: 匹配以5开头的数字后接0到3之间的数字或5到9之间的数字。6[6]
: 匹配以6开头的数字后接6。7[0135678]
: 匹配以7开头的数字后接0、1、3、5、6、7、8中的一个数字。9[89]
: 匹配以9开头的数字后接8或9。\\d{8}
: 表示接下来应该匹配8个数字。\\d
表示任意数字,{8}
表示前面的模式(这里是数字)重复出现8次。$
: 正则表达式的结尾位置锚定,用于匹配字符串的结尾。这个正则表达式是用来验证中国大陆手机号码格式的,匹配规则是以1开头,并且符合国内手机号码的第二位规定,接着后面是8个数字。