正则表达式(RegExp)整理:表达式规则、元字符以及限定符

AUTHOR | nicechi
类别 | 知识储备
发表 | 2020-02-09 20:41:26
更新 | 2020-08-05 21:26:54

正则表达式(RegExp)

正则表达式(Regular Expression,简称RegExp)可以简单地认为就是用来匹配特定文本的一组表达式,也可以认为成是一组规则。比如说,可以用正则表达式来验证所输入的数字是否符合手机号码的要求(假设满足以1为开头的11位数字为手机号码的话,其对应的正则表达式即“^1\d{10}$”),也可以用来验证所输入的文本是否为邮箱地址(假设满足“xxx@xxx.com”格式的文本为邮箱地址的话,其对应的正则表达式即“ ^(\w)+@(\d|[a-zA-Z])+\.com$ ”)。总之,正则表达式的作用很强大。

元字符(Metacharacter)

元字符(Metacharacter),即代表单个含有特殊含义的字符。

元字符(Metacharacter)描述
.

代表一个除了换行符之外的任何一个字符

:这里的换行符包括\n、\r

\w

代表一个单词字符(word character)

:word character 指的是任何的大小写字母、任何的数字以及下划线(_),即等价于“[a-zA-Z0-9_]”

\W代表除了\w之外的任何一个字符
\d代表任何一个数字(0~9),等价与[0-9]
\D代表除了\d之外的任何一个字符
\s

代表一个空白字符

:不单单指的是“ ”,还包括\n、\f、\t与\v

\S代表除了\s之外的任何一个字符
\b

代表单词的边界位置(即单词的开头位置或者末尾位置)

:例如

1、“\bap”可以匹配到 apple ,但是无法匹配到 map ,因为此时的 \b 代表的是 ap 必须出现在单词的开头

2、“ap\b”可以匹配到 map,但是无法匹配到 apple,因为此时的\ b 代表的是 ap 必须出现在单词的末尾 

\B

\b与\B相反,代表单词的非边界位置(即不在单词的开头或者末尾位置)

:例如

1、“\Bap”无法匹配到 apple ,但是可以匹配到 map ,因为此时的 \B 代表的是 ap 不能出现在单词的开头

2、“ap\B”无法匹配到 map,但是可以匹配到 apple,因为此时的 \B 代表的是 ap 不能出现在单词的末尾

\0

代表 NUL 字符

:NUL字符在字符串中也是以“\0”的形式存在

\n代表一个换行符(new line character)
\f代表一个换页符(form feed character)
\r代表一个回车符(carriage return character)
\t代表一个制表符(tab character)
\v代表一个垂直制表符(vertical tab character)
\xxx以八进制的形式表示一个字符
\xdd以十六进制的形式表示一个字符
\udddd以十六进制的形式表示一个Unicode字符

限定符(Quantifier)

限定符Quantifier描述
n*n可以出现任意次数,可以是0次(也就是说n也可以不出现)或者出现多次
n+n至少出现一次
n?n只可以出现1次或者0次
n{X}n需要出现X次,且只能出现X次
n{X,Y}n需要出现X到Y次
n{X,}n至少要出现X次
^nn处在所要判断的字符串的开头
n$n处在所要判断的字符串的末尾
?=n

匹配后面跟着是n的字符串

1、语法为 regexp(?=n),括号不能少,否则会提醒说正则表达式语法错误

2、正则表达式“I am(?= nice)”将会匹配到字符串“I am nice”中“ nice”前面的“I am”

?!n

与?=n相反,即匹配后面没有跟着n的字符串

1、语法为 regexp(?!n),括号不能少,否则会提醒说正则表达式语法错误

2、正则表达式“I am(?! nice)”在匹配字符串“I am nice”时没有结果,因为字符串中的“I am”后面跟着是“ nice”

范围

范围描述
[abc]匹配方括号中的任何一个字符,[abc]即可以匹配a、b或c
[^abc]不匹配方括号中的任何一个字符,[^abc]即匹配任何除了a、b或c的字符
[0-9]"-"表示字符的范围

1、[0-9]匹配数字1~9中的任何一个数字
2、[a-z]匹配a~z中的任何一个小写英文字母
3、[A-Z]匹配A~Z中的任何一个大写英文字母
4、[A-z]匹配任何一个大小写字母,但是[z-A]是错误的写法
5、[a-zA-Z]/[A-Za-z]匹配任何一个大小写字母
[^0-9]表示不匹配范围中的任何一个字符

1、[^0-9]不匹配数字1~9中的任何一个数字
2、[^a-z]不匹配a~z中的任何一个小写英文字母
3、[^A-Z]不匹配A~Z中的任何一个大写英文字母
4、[^A-z]不匹配任何一个大小写字母
5、[^a-zA-Z]/[A-Za-z]不匹配任何一个大小写字母
(x|y)匹配x或y
:“|”表示的意思是“或”,即选择两项中的其中一项

 

最后,希望这篇文章能带给你点启发,Have Fun!


CATEGORY

TOP