正则表达式定义的两种方法:
var reg1=/abc/;
var reg2 =new RegExp("abc");
正则表达式有两个方法,exec和test
reg.exec(str)如果能匹配到返回的是数组,第0项返回的是匹配的内容,index表示对应的数组下标,如果没有匹配成功,返回null。
reg.test(str)如果能匹配到返回的是true,匹配失败返回的是false.
一、c{1},c{2},c{3}...c{n} n个连续的c
var reg1=/c{1}/;
var str1="abcujukiki";
console.log(reg1.exec(str1))
结果为"c"
var reg1=/c{2}/;
var str1="abcujukiki";
console.log(reg1.exec(str1))
结果为null
如果把str1改成abcujukikic,结果也为null,因为虽然字符串里有两个c,但是这两个c不是连续的,所以匹配不成功。
二、c{n,m}表示n个或m个。大于等于n,小于等于m,而且会在这个范围里尽可能多的匹配连续的c。
var reg1=/c{2,4}/;
var str1="abcccccujukciki";
console.log(reg1.exec(str1))
例子中应该匹配大于等于2个,小于等于4个c,字符串里有5个c,尽可能多的去匹配,所以会匹配到4个连续的C。
三、c{n,} 表示匹配大于等于n个连续的c
var reg1=/c{2,}/;
var str1="abcccccujukciki";
console.log(reg1.exec(str1));
字符串中有5个连续的c,要求匹配的个数是大于等于2,并且尽可能多的去匹配,所以会匹配5个连续的c。
c* 大于等于0个连续的c.
c+ 大于等于1个连续的C。
c?等同于{0,1}满足0个就算成功。
在{}后加一个?表示非贪婪,尽可能少的去匹配。
c??第一个?表示数量{0,1} 第二个?表示非贪婪
^c表示以c为开头的
var reg =/^c/
var string1="momoc"
console.log(reg.exec(string1))
结果为null,因为字符串里虽然有c,但是不是在开头,所以匹配不成功。
c$表示以c为结尾的。
var reg =/^c/
var string1="momoc"
console.log(reg.exec(string1))
结果为c,且索引下标为4,因为虽然字符串里有几个c,但是要匹配的是以c结尾的。
.表示触\n之外的所有字符,且正则表达式要求第一个字符不是\n.
[abc]匹配[]中的其中一个就算匹配成功。
var reg =/[abc]/
var string1="amomoc"
console.log(reg.exec(string1))
结果为a,索引值为0,因为匹配abc中任意一个就算匹配成功,所以先匹配到a,就结束了。
小写字母[a-z] 大写字母[A-Z] 数字[0-9] 可以写在一起,中间不用任何符号分割[a-zA-Z0-9]
^ [a-z]以小写字母开头
var reg =/^[a-z]/
var string1="amomoc"
console.log(reg.exec(string1))
结果为a
[^a-z]反小写字母
var reg =/[^a-z]/
var string1="amomoc"
console.log(reg.exec(string1))
结果为null,因为要匹配的是非小写字母,而字符串里都是小写字母,所以匹配不到。
边界\b , 非\B \d数字,\D非数字 \s空格(单个)\S非空格 \n换行 \w表示大小写字母、数字[A-Za-z0-9] 不区分大小写/i /m修改^和$ ,/g第一次从头开始找,下一次以下一个匹配。
\1表示等同于第一个括号内匹配的内容(字符表达式)
var reg =/(mo)\1/
var string1="amomoc"
console.log(reg.exec(string1)
结果为“momo”,"mo" 还会再把(mo)匹配到的内容再重复一遍。
(?=)紧跟着限定,不参与匹配,只是检查是否符合条件
匹配电话号码:
var reg1= /^1[34578]\d{9}$/
var str1="1810368467699"
console.log(reg1.exec(str1))
匹配用户名:
var reg2 =/^[a-zA-Z0-9_-]{4,16}$/
var str2="-gkhnnkbmgk";
console.log(reg2.exec(str2))
匹配身份证:
var reg3=/^\d{15}$|^[0-9]{17}[X\d]$/
var str3="46902110622242X";
console.log(reg3.exec(str3))
匹配邮箱:
var reg4=/^[\w-_.]+\@[\w-_.]+\.[a-zA-Z]{2,4}$/
var str4="mozhiyun@qq.com";
console.log(reg4.exec(str4))