元字符:.^$+?{}[]|()\
.通配符(除了\n的任何字符)
* 0~无穷(可以按照0*True,结果为0)尽可能多的匹配
+ 1~无穷(可以按照0+True,结果为True)
? 出现0~1次(取最少)非贪婪匹配
{}匹配次数
{0,}==* {0,1}==? {1,}==+
贪婪(从后往前)(*+) 非贪婪(从前往后)后面加?
"*?" :重复任意次,但尽可能少重复。 如 "acbacb" 正则 "a.*?b"只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符,而"acbacb"最少字符的结果就是"acb"。
"+?":重复1次或更多次,但尽可能少重复,与上面一样,只是至少要重复1次。
"??":重复0次或1次,但尽可能少重复。如"aaacb"正则"a.??b"只会取到最后的三个字符"acb"。
"{n,m}?":重复n到m次,但尽可能少重复。如 "aaaaaaaa" 正则 "a{0, m}?"因为最少是0次所以取到结果为空。
"{n,}?":重复n次以上,但尽可能少重复。如 "aaaaaaa" 正则 "a{1,}?" 最少是1次所以取到结果为 "a"。
非获取匹配:
\w(?=pattern) 正向肯定匹配
(?<=pattern)\w 逆向肯定匹配
\w(?!pattern) 正向否定匹配
(?!pattern)\w 反向否定匹配
^s s开头 e$ e结尾
[\u4E00-\u9FA5] 匹配汉字
[]从字符集里匹配一个 可以使用a-z a,z表示范围 []l里面的:^非 \转义
\d 数字 \D非数字 \s空白字符 \S非空白字符
\w字母和数字下划线 \W非字母数字下划线
\b特殊字符边界(匹配单词边界,不匹配任何字符。要防止转义字符串前面加r)
|或匹配
()分组
先整体匹配,再进行分组的匹配,全部拿出来
var s='JavaScript and Java' var p=/\bJava(\w+)\b/ p.exec(s)[0] //结果为:"JavaScript" p.exec(s)[1] //结果为:"Script"
手机号码的正则:
^1[3|5|8]\d{9}$