首先推荐一个校验正则的网站
regexr-cn
- 限定符
/used?
//?代表它前面这个字符d需要出现0次或者1次
/ab*c
//* 它会匹配 前面这个字符出现0次或者多次 (只出现一次不行)
/ab+c
// 它会匹配出现一次以上的字符
/ab{6}c ab{2,6}c ab{2,}c
/ {}指定出现次数 也可以是区间2到6 2,指两次以上
- 或运算符
a (b|c)
这个会先去匹配‘a’空格 后面括号中的内容代表要么是b要么是c
ab |c
没有括号就代表 要么是ab要么是c
- 字符类
[abc]+
方括号代表 要去匹配的字符只能取自括号内的
[a-z]
代表所有的小写字符
[a-zA-Z]+
代表所有的英文字符
[a-zA-Z0-9]+
代表所有的英文字符和数字
^[a-zA-Z0-9]+
^代表要求匹配除 ^后来列出的以外的字符
4.元字符
表达式中大多数元字符都以反斜杠开头
\d 代表数字字符 等同[0-9]+
\w 代表单词字符(英文、数字及下划线)
\s 代表空白符 (包含 Tab和换行符)
\D 代表非数字字符
\W 代表非单词字符
\S 代表非空白字符
- 特殊字符
. 句点在正则表达式中也是一个特殊字符 代表任意字符但不包含换行符
^ 匹配行首
$ 匹配行尾
- 贪婪与懒惰匹配
<.+>
//会匹配
<ul>
<li>当前没有评论</li>
</ul>
<.+/?>
//只会匹配 ?会把匹配的贪婪匹配转为懒惰匹配
<ul>
<li>
</li>
</ul>
<.+/?>
- 示例
RGB 颜色值匹配
#00
#fffffff
#fafafaf
#000000
#ffffffffff
//匹配16进制的
//规则: 需要a-f 16位 可以有0-9 位数6位 \b代表单词字符的边界
#[a-fA-F0-9]{6}\b