正则的细节
1.正则:检验字符串的规则
2.正则就是有元字符和修饰符构成:(写在//里面的都叫元字符)
元字符分两种:
1种是有特殊意义的 例如:/\d/表示数字
2种没特殊意义 没有特殊意义就是字符本身
3.特殊意义的元字符
1.\ 转义字符 转义后面紧跟的字符的意义
2. \d 有意义(数字) \.无意义(是什么就是什么)
3. . 代表除了\n以外的任何单个字符
4.^以什么什么开头,^读音:kongchu
5.$ 以什么结束, \$就是$本身,n$就是包含$的结尾;
6.| 代表或的意思;
4.带有量词意思的元字符:
1.? 代表0到1个;
*代表0到多个;
+代表1到多个
{}系列
5.[]系列元字符;
[xyz] 代表x或y或z中的任意一个
[0-9] 代表0到9之间的任意一个
[a-z] 代表小写a到小写z
[A-Z] 代表大写A到大写Z
[A-z] 代表大写A到小写z(不区分大小写)
6.()分组系列:
(x|y) x或y中的其中一个;
正则的细节:(正则定义的区别)
var reg=/hello/g (/hello/)代表元字符 不可以用字符串拼接
字面量定义
var reg=new RegExp("hello","g") ("hello" 代表字符串,可以通过字符串拼接)
对象实例定义
3. /./和/\./的区别?
. 任意字符
\.就是一个点
4[.],[+]的意思
.和+在正则里面是特殊的元字符;
. 是任意字符 +是 量词代表多个
在[.]和[+]就是这个字符本身没有意义;
5. |代表或
[2|3]代表2或3;
[12|34]代表1或2|3或4,或者12或者34
往往这种情况需要分组() (^(12)|(34)$)
6. -的问题:
/-/就是本身没有意义
如果[0-9]代表 0到9之间的任意一个数字;
正则的案例:
1.写一个12到65周岁的正则:
var reg=/^(1[2-9])|(2-5[0-9])|(6[0-5])/
var st="13"
console.log(reg.test(st))
2.写一个正常数字的正则;
var reg=/^[+-]?([0-9]|[1-9]\d+)(\.\d+)?$/
var st="-20.13"
console.log(reg.test(st))
3.写一个邮箱验证
var reg=/^[a-zA-Z](\w|-){5,17}@((136|126).com)|(yeah.net))$/
var st="as122@136.com"
console.log(reg.test(st))
总结:正则每写完一部分就用()包起来 -不是特殊符
使用定时器的地方先清定时器,防止定时器叠加