0%

正则表达式语法

介绍

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为”元字符”)组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

推荐使用在线 regexr 进行正则表达式匹配测试。

普通字符

直接写进正则里面就行。

字符 描述
a 匹配a字符。
[a-z] 匹配a-z字符。
a-z 不匹配a-z字符,除此之外都匹配。
[a-z0-9] 匹配a-z或者0-9字符。

非打印字符

字符 描述
\f 匹配一个换页字符。
\n 匹配换行字符。
\r 匹配回车字符。
\s 匹配空白字符,包括空格、制表符、换页符等等。
\S 匹配非空白字符,相当于\s取^。

特殊字符

如果要匹配特殊字符,需要在字符前加\,否则会作为特殊字符按下表对待。比如如果要匹配.这个字符,需要使用\.进行匹配。

字符 描述
$ 匹配字符串结尾位置,如果设置了Multiline属性,也匹配’\n’或者’\r’。
() 标记一个子表达式开始和结束。
* 匹配前面的子表达式零次或者多次。
+ 匹配前面的子表达式一次或者多次。
. 匹配换行符’\n’之外任何单字符。
[] 标记一个中括号表达式的开始和结束。
? 匹配前面的子表达式零次或者一次。
\ 将下一个字符标记为特殊字符或者原义字符、或者向后引用。
^ 匹配输入字符串开始位置。如果在中括号使用,表示取反,不接受该字符集。
打不出竖直符号,暂时用这个符号代替,指明两项之间一个选择。
{ 标记限定符表达式开始,可参考如下限定符部分。

限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。

字符 描述
* 匹配前面的子表达式零次或者多次。
+ 匹配前面的子表达式一次或者多次。
? 匹配前面的子表达式零次或者一次。
{n} n是一个非负整数,匹配确定的n次前面的子表达式。
{n,} n是一个非负整数,至少匹配n次前面的子表达式。
{n,m} n,m是一个非负整数且n<=m,至少匹配n次,最多匹配m前面的子表达式。

注意:*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

定位符

定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。

字符 描述
^ 匹配输入字符串开始的位置。
$ 匹配输入字符串结尾的位置。
\b 匹配单词边界。
\B 非单词边界的匹配。

元字符

还有一些字符是常用的,但是有些已经归类到上面部分,就不再提及。

字符 描述
\d 数字字符匹配。相当于[0-9]
\D 非数字字符匹配。相当于0-9
\w 匹配A-Z、a-z、0-9和下划线。相当于[a-zA-Z0-9_]。
\W 除A-Z、a-z、0-9和下划线之外的字符匹配。相当于a-zA-Z0-9_

反向引用

假如你需要在如下的句子中找首位字母都一样的单词,可以使用引用。
he did not feel good this evening.
/\b([\w])[\w]*\1\b/g

参考

[1] 微软正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(v=vs.100).aspx


因为我们是朋友,所以你可以使用我的文字,但请注明出处:http://alwa.info