常见匹配字符的元字符:javascript
.
匹配除换行符之外的任意字符。\w
匹配字母或数字或下划线或汉字。\s
匹配任意的空白符。\d
匹配数字。\W
匹配任意不是字母,数字,下划线,汉字的字符。\S
匹配任意不是空白符的字符。\D
匹配任意非数字的字符。[0-9]
和[^abc]
也都匹配一个字符。常见匹配位置的元字符:html
\b
匹配单词的开始或结束。^
匹配字符串的开始。$
匹配字符串的结束。\B
匹配不是单词开头或结束的位置。如下列字符串("abc def"
)为例:java
^
能够匹配到位置0,该位置位于字符串开头。$
能够匹配到位置7,该位置位于字符串结尾。\b
能够匹配到位置0、位置三、位置四、位置7,这些位置位于单词开始或结束处。()
经过小括号分组匹配多个字符。(abc)
匹配abc
三个字符。限定符:正则表达式
*
重复零次或更屡次。+
重复一次或更屡次。?
重复零次或一次。{n}
重复n次。{n,}
重复n次或更屡次。{n,m}
重复n到m次。.+
,[0-9]*
。(abc){2, 5}
。1.*3
全局查找字符串12313
,匹配结果为12313
。?
,则匹配模式为非贪婪模式,尽量少的匹配。例如,正则1.*3
全局查找字符串12313
,匹配结果为123
、13
。1.(a|b)
匹配包含a
或b
的字符。
2.abc|def
匹配包含abc
或def
的字符。
3.^abc|def$
匹配abc
开头或者def
结尾的字符。
4.^(abc|def)$
只匹配abc
或def
这两个字符。spa
()
指定子表达式后,匹配子表达式的文本(分组捕获的内容)能够在表达式或其它程序中做进一步的处理。'<html></html>'.match(/<(.+?)><\/\1>/)
中\1
表明分组1匹配的文本。(?<Name>)
指定子表达式的组名(Name),\k<Name>
引用捕获的内容。'<html></html>'.match(/<(?<tag>.+?)><\/\k<tag>>/)
组名为tag。\b\w+(?=ion\b)
,匹配谁后面有ion
结尾,则查找position relative
时,它会匹配posit
。(?<=\bun)\w+\b
,匹配谁前面有un
开头,则查找see unreal
时,它匹配real
。\abc(?!\d)
匹配后面没有数字的abc
,则查找abc1 abcd
时,它匹配是后面的abc
。\(?<!\d)abc
匹配前面没有数字的abc,则查找abc 1abc
时,它匹配是前面的abc
。12(?!\d)
全局匹配下列字符串的过程:code
(?!\d)
,它从位置2开始匹配,要求位置后面不是数字,匹配成功。(?!\d)
,匹配位置5,要求位置后面不是数字,而该位置后面是数字,匹配失败。(?!\d)
,匹配位置7,该位置后面不是数字,匹配成功。12
,不匹配中间的12
。'12a1212'.match(/12(?!\d)/g) // ["12", "12"]