正则:就是处理字符串的一个规则
用处:
1.匹配:字符串是否匹配规则,返回值是布尔值(test)
2.捕获:捕获字符串中符合规则的部分,返回值是null或数组(exec)
组成:元字符和修饰符
正则的构建:字面量(/\d/)和实例创建(new RegExp("\\d")),两者有区别,区别另说,常用字面量方式
元字符://之间的具有意义的字符,分为两组
1.具有特殊意义的元字符
- \ - 转义字符
- ^ - 以某个元字符开头,不占位置
- $ - 以某个元字符结尾,不占位置
- . - 除了\n意外的任意一个字符
- \n - 换行符
- () - 分组,把一个大正则本身划分成几个小的正则
- x|y - x或者y中的一个
- [xyz] - xyz中的任意一个
- [^xyz] - 除了xyz以外的任意字符
- [a-zA-Z0-8] - a-z,A-Z,0-8中的任意一个字符
- \d - 0-9的任意一个字符
- \D - 除0-9以外的任意字符
- \b - 匹配边界符
- \w - 字母,数字,下划线的任意一个字符,等同于[0-9a-zA-Z_]
- \s - 表示空白字符,空格,制表符,换页符的任意一个
2.代表出现次数量词的元字符
- * - 大于等于0次
- + - 大于等于1次
- ? - 0或1次
- {n} - n次
- {n,} - 大于等于n次
- {n,m} - 大于等于n且小于等于m次
3.修饰符
img
ignoreCase:忽略大小写
multiLine:多行也可以匹配
global:全字符串范围内
如/\d/g.exec("abcd"),不加g只会找一次,加了g会把符合条件的都找出来
个人觉得要注意的地方:
1.中括号里的基本所有的字符都表示自身的意思,特殊的是 ^和-,
^后面有内容的时候表示非,否则表示其自己
-前后有内容的时候表示范围,否则表示其自己
2. abcd|efgh,首先|不能加空格,不然会匹配空格,然后,|左右两边可以看成一个整体,出现某一侧即可,也就是上面的匹配 abcd 或 efgh ,而不是|临近的de,还有个常遇到的/^66|77$/,还是一分两半,要不以66开头,要不77结尾