学习网站:https://regex101.com/
直接匹配
123
以什么开头
^
以什么结尾
$
abc的其中一个
[abc]
数字和字母的所有
a-z 0-9 A-Z
[a-z]
取反
[^a-z]
匹配个数范围
{m,n}
3个到无穷个
{3,}
特殊字符
匹配任意字符,除了行的结尾的回车符
.
0-9的范围简写
\d
除了数字的任意字符
\D
所有字符的表示,包括回车
[\d\D]
字母数字或下划线
\w
除了字母数字下滑先的
\W
特殊的符号
\s
除了特殊字符的其他符号
\S
数量的简写方法
[\w]{0,1} 出现了0到1次
简写:
\w?
[\w]{0,} 出现了0到无穷次
\w*
[\w]{1,} 出现了1到无穷次
\w+
例子:guowen12@126.com 要求全匹配
邮箱的名字第一个字符不能是下划线
^[a-zA-Z0-9]w*@126\.com
进阶:group组
()
给组起名字组名叫first
^(?<first>[a-zA-Z0-9]\w*@126\.com)
引用组名1
^(\d\d)\1$
引用组名first
^(?<first>\d\d)\k<first>$
例子:foobar,fooboo
找到bar前面的foo
foo(?=bar)
找到bar后面的foo
foo(?!bar)
例子:barfoo,boofoo
bar出现在foo前面
(?<=bar)foo
foo出现在bar的最后面
(?<!bar)foo
AABC类型匹配
^(?<a>.)\k<a>(?!\k<a>)(?<b>.)(?!\k<b>|\k<a>).$