**正则的作用:**测试文本,匹配文本的,匹配串中的子窜或者取出符合某个条件的字串
非打印字符 | 描述 |
---|---|
\cx | 匹配键盘的 c 代表 A-Z a-z 子符 |
\f | 匹配换页符 |
\n | 匹配换行符 |
\r | 匹配回车符 |
\t | 匹配制表符 |
\s | 匹配的是任何空白字符 等价[\f\r\n\v\t] |
\S | 匹配任何非空白字符 等价[^\f\r\t\n\v] |
特殊字符(具有特殊含义的字符 要查)
$ | 匹配表达式的结尾 如果套匹配$符号 $ |
() | 标记子表达式的开始和结尾 如果要匹配() ( ) |
* | 指匹配前面的子表达式 0次或者多次 如果要匹配* * |
+ | 指匹配前面的字表达式 1次或者多次 要匹配+ + |
。 | 匹配除\n 之外的任何单字符 匹配. . |
[] | 匹配中括号的结束和开始 匹配[ [ |
? | 匹配前面的子表达式 0次或者1次 匹配问号 ? |
\ | 匹配一些转义或者单字符 或者原义字符 匹配\ \ |
^ | 输入字符串的开始位置 在中括号中使用表示非 匹配自身 ^ |
{} | 表示限定表达式的开始和结束 匹配{} { |
限定符
* | 匹配子表达式0次或者多次 |
+ | 匹配子表达式1次或者多次 |
? | 匹配子表达式0次或者1次 |
{n} | n代表非负整数 匹配前面的表达式n次 |
{n,} | n代表非负整数 匹配前面的子表达式n次或者多次 |
{n,m} | n,m代表非负整数 匹配前面的子表达式n次或者m次 |
定位符
\d | 匹配的是数字字符 等价于[0-9] |
\D | \D 匹配的是非数字 等价于[^0-9] |
\w | 匹配的是 字母 数字 下划线 等价于 [A-Za-z0-9_] |
\W | 匹配的是 非字母数字下划线 等价于 [^A-Za-z0-9] |
var egx = /abc/;
var s = "abcdefg";
console.log(s.match(egx)); //匹配到abc
var egx = /^\w+\+?$/;
var s = "abcdefgh";
console.log(s.match(egx)); //匹配所有字符
手机号的正则
var egx = /^1[34578]{1}\d{9}$/;
var s = "13353532152";
console.log(s.match(egx));
邮箱的正则
var egx = /^\w{5,10}@(qq|sina|163)\.(com|com\.cn)$/;
var s = "liu_126142@qq.com.cn";
console.log(s.match(egx));
身份证正则
var egx = /^[1-9]\d{5}(18|19|[23]\d)\d{2}(0[1-9]|(10|11|12))(([02][1-9])|(10|20|30|31))\d{3}[0-9Xx]$/;
var s = "610427199901020016";;
console.log(s.match(egx));
i 忽略大小写, g全局查找
var s = "abcdefgaabbccdks AAAaaa";
console.log(s.replace(/a/ig, "+"));
正则里面的$1… 正则里面的占位符
var egx = /^[1-9]\d{5}(18|19|[23]\d)\d{2}(0[1-9]|(10|11|12))(([02][1-9])|(10|20|30|31))\d{3}[0-9Xx]$/ig;
var s = "610427199906020013"
console.log(s.replace(egx, "$1$2$4"));
正则表达式里面\1
反向引用 \1 前面子表达式的内容
var str = "Is is the cost of of gasoline going up up up";
console.log(str.match(/\b([a-z]+) \1\b \1\b/ig));
var s1="第一节 第一节";
console.log(s1.match(/^([\u4e00-\u9fa5]{0,}) \1$/ig));
redexp 是通过test 方法 验证 返回值是true false
var aa = "aldfjsldfj(dsfasjfj3124123)";
var reg = new RegExp(/\((\w+)\)/);
console.log(reg.test(aa));