JS – 正则
正则表达式的写法
var reg = /lf(abc)/gmi; // 注意没有引号 var reg = new RegExp("(\\d){4}", "gi"); // 好恶心的写法\\, 注意有引号
g: 全局, 表示搜索整个字符串, 如果没有这个, 那么就会匹配一个然后退出
m: 多行
var str = "lf\nlf"; var reg = /^lf/gi/; # 只会匹配一个 var reg = /^lf/gim/; # 匹配两个, 匹配一行之后, 继续匹配
i: 忽略大小写
匹配到的结果
var str = ‘abcdabcdabcd def‘; var reg = /([a-z]{3})d/gi;
可以捕获分组
var res1 = ‘‘; while (res1 = reg.exec(str)) { document.write(res1[0] + ‘, ‘ + res1[1] + ‘<br>‘); } // abcd, abc // abcd, abc // abcd, abc
不捕获分组
var res2 = str.match(reg); for (var i = 0; i < res2.length; i++) { document.write(res2[i] + ‘<br>‘); } // abcd // abcd // abcd
总结
对于 var reg = /^(lf)abc/gmi; 他会将分组信息放进 1, 2,…等下标数组里
while (res = reg.exec(str)) { document.write(res[0] + ‘<br>‘); // 表示匹配到的一整条 document.write(res[1] + ‘<br>‘); // 表示 第一个分组 }
var str = ‘abc‘; var reg = /abc/gi; var arr = str.match(reg); // 返回匹配到的, 不会处理分组 alert(arr[0]);
替换 replace
var str = ‘abc‘; var reg = /abc/gi; // 主要不要有 ‘‘ var news = str.replace(reg, ‘AAA‘); // abc 替换为 AAA
var reg = /(.)\1+/gi; var res = reg.replace(reg, "$1"); // 获取 分组 alert(res);
获取输入来匹配 (从输入框中输入正则, 并输出匹配)
var new_reg = ‘/‘ + reg.value + ‘/gi‘; strs.value = regs.value; strs.value = regs.value.replace(eval(new_reg), str.value); var new_reg = new RegExp(reg.value, ‘gi‘); // 支持 \d strs.value = regs.value; strs.value = regs.value.replace(new_reg, str.value);
test
检测一个字符串中, 是否满足正则表示, 返回 bool
var str = ‘abc‘; var reg = /ab/; alert(reg.test(str));