学习、验证正则表达式的推荐网站:
https://regex101.com/
常用说明
a?
代表出现没有或者1次。
a*
代表a出现0次,或者多次
a+
代表a出现1次以上
.
指任意字符,但是不包括换行符
^a
排除字符a
a{b}
代表a需要出现b次才能匹配
a{b,c}
代表a需要出现b-c次这个范围内,才能匹配
a{b,}
代表a需要出现b次以上,才能匹配
[ab]
[]的作用是集合,用于匹配多个相同的类型,例如 /[ab]+/ 就代表ab或者a或者b需要连续出现1次以上。
(ab)
ab为一个组(Group),在代码中可以对匹配的值(Match)和各个组(Group)进行拓展操作
a (cat|dog)
匹配 a cat a dog ,cat或者dog前面必须带一个a
a cat|dog
匹配 a cat 或者 dog
[a-zA-Z0-9]
匹配 a-z、A-Z的字符和0-9的数字
元字符
\d
数字字符 \d+ 匹配一个以上的数字
\D
非数字字符
\w
单词字符 单词 数字 下划线即英文字符
\W
非单词字符
\s
空白符 包含空格和换行符
\S
非空白字符
\b
单词的边界 单词的开头或结尾 单词与符号之前的边界
\B
非单词的边界 符号与符号 单词与单词的边界
特殊判断用法
注意:括号是固定格式,不能少
(?=pattern)
正向先行断言,表示匹配位置后面必须紧跟着满足 pattern 的字符串,但不包括这个字符串在匹配结果中。
(?!pattern)
负向先行断言,表示匹配位置后面不能紧跟着满足 pattern 的字符串,也不包括这个字符串在匹配结果中。
(?<=pattern)
正向后行断言,表示匹配位置前面必须是满足 pattern 的字符串,但不包括这个字符串在匹配结果中。
(?<!pattern)
负向后行断言,表示匹配位置前面不能是满足 pattern 的字符串,也不包括这个字符串在匹配结果中。
(?:pattern)
非捕获型分组,表示将 pattern 包含在一个分组中,但不把这个分组的匹配结果保存到分组编号中。这个分组通常用于表示可选的或重复的子表达式,或者是限制量词的作用范围,而不需要把它们的匹配结果单独提取出来。