1.元字符
在正则表达式中,包括2种字符:
(1)普通字符(普通字符就是az、09这类常见的字符)
(2)特殊字符(元字符)
元字符表
元字符|说明
\d | 匹配数字,相当于[0-9]
\D | 匹配非数字,相当于[^0-9]
\w | 匹配一个单字字符,相当于[A-Za-z0-9_]
\W | 匹配一个非单字字符,相当于[^A-Za-z0-9_]
\s | 匹配一个空白字符,包括空格、制表符、换页符和换行符
\S | 匹配一个非空白字符
\r | 匹配一个回车符 (U+000D)
\n | 匹配一个换行符 (U+000A)
\f | 匹配一个换页符 (U+000C)
. | (小数点)匹配除换行符之外的任何单个字符。
[...] | 匹配方括号内的任一字符
[^...] | 匹配非方括号中的任一字符
注意:
方括号又叫字符组,注意某些元字符在字符组外和字符组内的意义不同。例如:^在字符组外匹配行的开头,在字符组内表示排除型字符;-在字符组外匹配普通连字符号,在字符组内(不在开头)表示一个范围;问号和点号在字符组外通常是元字符,但在字符组内只是匹配普通字符而已
2.连接符
连接符|说明
[0-9]|匹配数字,等价于\d
[a-z]|匹配英文小写字母
[A-Z]|匹配英文大写字母
[a-zA-Z0-9]|匹配数字或者任意字母
3.限定符
限定某个或某类字符出现的次数,以下n,m是一个正整数
限定符|说明
+|重复1次或者更多次(≥1)
?|重复0次或者1次(≤1)。如果紧跟在任何量词 *、 +、? 或 {} 的后面,将会使量词变为非贪婪的(匹配尽量少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。
*|任意次数
{n}|重复n次
{n,}|最少n次(≥n)
{n,m}|重复n到m次(≥n&&≤m)
4.定位符
限定某些字符出现的位置
定位符|说明
^|限定开始位置的字符
$|限定结尾位置的字符
\b|匹配一个词的边界。但是[\b]很特殊,是匹配一个退格(U+0008)
\B|匹配一个非单词边界
5.转义字符
匹配正则表达式中的特殊字符,我们就必须在该特殊字符前面加上反斜杠“\”将其进行转义
例如:
$、(、)、*、+、.、[、]、?、\、/、^、{、}、|
6.分组符
用小括号()括起来的表达式看出一个整体来处理
7.选择符
选择符|选择匹配2个选项之中的任意一个
8.注释
(?#注释的内容)
9.正则表达式标志
标志|说明
g|全局搜索
i|不区分大小写
m|多行搜索
y|执行“粘性”搜索,匹配从目标字符串的当前位置开始,可以使用y标志 例子:
/Mango/i.test('mango')
返回true
详细请查看:developer.mozilla.org/zh-CN/docs/…
特殊需求表达式
Email地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
手机号码:
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
身份证号(15位、18位数字):
^\d{15}|\d{18}$
2 到 9 位中文昵称:
^[\u4e00-\u9fa5]{2,9}$
账号/密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):
^[a-zA-Z]\w{5,17}$
匹配HTML Tag
<("[^"]*"|'[^']*'|[^'">])*>