JavaScript里正则常用API
一、5个常用方法:
1. test
reg.test(str); // 返回是否包含正则 true/false
var str = "abcdefghijkl3mnop2qts";
/\d/.test(str); // true
2. match
str.match(reg); // 一般正则表达式加g,会返回包含所有匹配项的数组
var str = "abcdefghijkl3mnop2qts";
str.match(/\d/g); // ["3", "2"]
3. search
str.search(reg); // 返回第一条匹配的索引位置
var str = "abcdefghijkl3mnop2qts";
str.search(/\d/); // 12
4. replace
str.replace(str/reg, replacement); // 不改变原字符串,返回新字符串
5. exec
在循环中反复地调用 exec() 方法是唯一一种获得全局模式的完整模式匹配信息的方法。
var reg = /\d/g;
var str = "abcdefghijkl3mnop2qts";
reg.exec(str); // ["3", index: 12, input: "abcdefghijkl3mnop2qts", groups: undefined]
// 可以使用 reg.lastIndex 判断目前的执行进度
reg.lastIndex; // 13
reg.exec(str); // ["2", index: 17, input: "abcdefghijkl3mnop2qts", groups: undefined]
reg.exec(str); // null
// 之后循环往复
二、3个进阶概念
1. 捕获组
// capture group
var reg = /(\d+)/g;
var str = "abcd3fgh55jy";
str.replace(reg, "($1)"); // 会为数字加上括号
2. 反向引用
// \1是对捕获组的引用
var reg = /(\d+)\1/g;
var str = "abcd3fgh55jy";
str.match(reg); // 这次只匹配到了55
3. 前瞻
// (?=)正向前瞻
// (?!)负向前瞻
var reg = /(\d+)(?=\1)/g;
var str = "abcd3fgh55jy";
str.match(reg); // 这次只匹配到了55,但只捕获5