deerchao大佬的正则表达式30分钟入门教程
学习笔记,大佬的这篇文章帮了我很多次
元字符
匹配一个位置.
匹配除换行符以外任意字符\w
匹配 字母 数字 下划线 汉字\s
匹配 空白符\d
匹配 数字\b
匹配 正则单词的开始 或 结束^
匹配 测试指定的字符串 的开始$
匹配 测试指定的字符串 的结束
正则单词 指 不少于一个的连续\w 就是正则单词
字符转义
\
,用于匹配查找 正则保留字本身
重复
表示将前面的内容重复匹配*
重复 0 或 多次+
重复 1 或 多次?
重复 0 或 1{n}
重复 n次{n,}
重复 n次 或 更多次{n,m}
重复 n次 到 m次
特定字符匹配
[]
内部列出想匹配每个的字符 或 范围
[aeiou]
匹配 一个a或e或i或o或u[0-9]
匹配0-9[A-Z]
匹配A-Z[a-z0-9A-Z _]
匹配a-z或0-9或A-Z或 或_ 相当于排除了中文的\w
分支条件
|
表示或
0\d{2}-\d{8}|0\d{3}-\d{7}
这个表达式能匹配两种以连字号分隔的电话号码:
一种是3位区号,8位本地号(如010-12345678),
一种是4位区号,7位本地号(0376-2233445)
分组
()
表示子表达式,可用于多次重复子表达式
(\d{1,3}\.){3}\d{1,3}
匹配 (1-3个数字再匹配一个.) 重复三次 再匹配1-3个数字((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
匹配IP地址,每个数字不大于255,包括01.02.03.04
反义
反义就是大写元字符\W
匹配 不是 字母 数字 下划线 汉字 的字符\S
匹配 不是 空白符 的字符\D
匹配 不是 数字 的字符\B
匹配 不是 正则单词 开头 或 结束 的位置[^x]
匹配 除 x 以外 的字符[^aeiou]
匹配 除 aeiou 以外 的字符
<a[^>]+>
匹配用尖括号括起来的以a开头的字符串。
后向引用
零宽断言
负向零宽断言
题目
校验密码 8-16位 必须含有大写、小写字母 与一位特殊字符[,._-]
‘(?=.[0-9])(?=.[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,20}$’