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