1、只匹配当指定的字符串
语法:
/^匹配规则$/
解释:
/^固定开头,$固定结尾/
例子:
/^123$/
2、只匹配单个字符
语法:
/^[匹配规则]$/
例子:
/^[abc]$/
/^[a-z]$/
/^[a-zA-Z]$/
/^[^a-zA-Z]$/
/^[0-9]$/
3、匹配字符串
语法:
/^[匹配规则]{数字}$/
例子:
/^[a-zA-Z]{3}$/
/^[a-zA-Z]{3,6}$/
/^[a-zA-Z]{3,}$/
注意:匹配特殊字符时需要加\
例子:/^\(\)$/
4、匹配任意字符(不匹配回车符)
语法:
/^.{数字}$/
例子:
/^.{3,6}$/
/^.{3,}$/
5、一些匹配简写、匹配任意字符(包括回车)
/\d/
/\D/
/\w/
/\W/
/\s/
/\S/
/\w{0,1}/ <=> /\w? //?表示0次到1次
/\w{0,}/ <=> /\w* //*表示0次到无穷次
/\w{1,}/ <=> /\w+ //*表示1次到无穷次
6、小练习
tang91@136.com => /^[a-zA-z0-9]\w*@126\.com$/
第一个字符匹配的是字母和数字
因为.表示是除回车外的所有字符,所以需要转义,.前面加上\
7、正则表达式的进阶
A、组
语法:
/^(?<变量名>)规则$/
例子:
'sunwu51@126.com'.match(/^(?<first>[a-zA-z0-9]\w*)@126\.com$/)
B、组的复用
语法:
(组的内容)\1
例子:
'1212'.match(/^(\d\d)\1$/)
语法:
(?<自定义组名>)\k<first>
例子:
'1212'.match(/^(?<first>\d\d)\k<first>$/)
C、分组从左往右看
语法:(?=) 和 (?!)
例子:
'foobar,fooboo'.match(/foo(?=bar)/)
'foobar,fooboo'.match(/foo(?!bar)/)
D、分组从右往左看
语法:(?<=) 和 (?<!)
例子:
'barfoo,boofoo'.match(/(?<=bar)foo/)
'barfoo,boofoo'.match(/(?<!bar)foo/)
E、正则匹配一个四字成语 - 滔滔不绝
由上可看出,涛涛不绝是属于aabc型的成语
第一位分组为a,第二位复用a,第三位限制不能为a,且将第三位进行分组b,第四位限制,不能为b或者a
最终答案:
'aadc'.match(/^(?<a>.)\k<a>(?!\k<a>)(?<b>.)(?!\k<b>|\k<a>).$/)