RegExp 
语法 
js
// var patt = new RegExp(pattern, modifiers);
var re = new RegExp("\\w+");
// var patt = /pattern/modifiers;
var re = /\w+/;// var patt = new RegExp(pattern, modifiers);
var re = new RegExp("\\w+");
// var patt = /pattern/modifiers;
var re = /\w+/;修饰符 
- i执行对大小写不敏感的匹配。
- g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
- m执行多行匹配。
方括号 
- [abc]查找方括号之间的任何字符。
- [^abc]查找任何不在方括号之间的字符。
- [0-9]查找任何从 0 至 9 的数字。
- [a-z]查找任何从小写 a 到小写 z 的字符。
- [A-Z]查找任何从大写 A 到大写 Z 的字符。
- [A-z]查找任何从大写 A 到小写 z 的字符。
- [adgk]查找给定集合内的任何字符。
- [^adgk]查找给定集合外的任何字符。
- (red|blue|green)查找任何指定的选项。
元字符 
- .查找单个字符,除了换行和行结束符。
- \w查找数字、字母及下划线。
- \W查找非单词字符。
- \d查找数字。
- \D查找非数字字符。
- \s查找空白字符。
- \S查找非空白字符。
- \b匹配单词边界。
- \B匹配非单词边界。
- \0查找 NULL 字符。
- \n查找换行符。
- \f查找换页符。
- \r查找回车符。
- \t查找制表符。
- \v查找垂直制表符。
- \xxx查找以八进制数 xxx 规定的字符。
- \xdd查找以十六进制数 dd 规定的字符。
- \uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。
量词 
- n+匹配任何包含至少一个 n 的字符串。
- n*匹配任何包含零个或多个 n 的字符串。
- n?匹配任何包含零个或一个 n 的字符串。
- n{X}匹配包含 X 个 n 的序列的字符串。
- n{X,}X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。
- n{X,Y}X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。
- n$匹配任何结尾为 n 的字符串。
- ^n匹配任何开头为 n 的字符串。
- ?=n匹配任何其后紧接指定字符串 n 的字符串。
- ?!n匹配任何其后没有紧接指定字符串 n 的字符
RegExp 对象方法 
- exec检索字符串中指定的值。返回找到的值,并确定其位置。
- test检索字符串中指定的值。返回 true 或 false。
- toString返回正则表达式的字符串。
支持正则表达式的 String 对象的方法 
- search检索与正则表达式相匹配的值。
- split把字符串分割为字符串数组。
- match(regexp)检索字符串与正则表达式进行匹配的结果。- regexp一个正则表达式对象或者任何具有 Symbol.match 方法的对象。
- 返回值一个 Array,其内容取决于是否存在全局(g)标志,如果没有匹配,则返回 null。
 
- replace(pattern, replacement)返回一个新字符串,其中一个、多个或所有匹配的 pattern 被替换为 replacement。- pattern可以是字符串或者一个带有 Symbol.replace 方法的对象,
- replacement可以是字符串或函数。
- 返回值一个新的字符串,其中一个、多个或所有的匹配项都被指定的替换项替换。
 
- matchAll(regexp)返回一个迭代器,该迭代器包含了检索字符串与正则表达式进行匹配的所有结果(包括捕获组)。- 同 match,但 regexp必须 b 含全局g标志
 
- 同 match,但 
- replaceAll(pattern, replacement)返回一个新字符串,所有匹配 pattern 的部分都被替换为 replacement。- 同 replace pattern若为正则对象则必须含全局g标志
 
- 同 replace 
捕获组 
(x)捕获组:匹配 x 并记住匹配项。
js
"Textfoo,asdasdafoo,foo".match(/(foo)/g); // 失败捕获组, 正常全局匹配
// 输出:['foo', 'foo', 'foo']
"Textfoo,asdasdafoo,foo".match(/(foo)/); // 单个捕获组 [match#1, group#1]
// 输出:['foo', 'foo']
"3[a]2[bc]".match(/\[([^\[\]])\]/); // 单个捕获组
// 输出:['[a]', 'a']
"3[a]2[bc]".match(/\[([^\[\]]+)\]/g) // 失败捕获组, 正常全局匹配
// 输出:['[a]', '[bc]']
[..."3[a]2[bc]".matchAll(/\[([^\[\]]+)\]/g)]; // 全部捕获组
// 输出:[["[a]","a"],["[bc]","bc"]]"Textfoo,asdasdafoo,foo".match(/(foo)/g); // 失败捕获组, 正常全局匹配
// 输出:['foo', 'foo', 'foo']
"Textfoo,asdasdafoo,foo".match(/(foo)/); // 单个捕获组 [match#1, group#1]
// 输出:['foo', 'foo']
"3[a]2[bc]".match(/\[([^\[\]])\]/); // 单个捕获组
// 输出:['[a]', 'a']
"3[a]2[bc]".match(/\[([^\[\]]+)\]/g) // 失败捕获组, 正常全局匹配
// 输出:['[a]', '[bc]']
[..."3[a]2[bc]".matchAll(/\[([^\[\]]+)\]/g)]; // 全部捕获组
// 输出:[["[a]","a"],["[bc]","bc"]]使用命名捕获组 
js
const paragraph = "The quick brown fox jumps over the lazy dog. It barked.";
const capturingRegex = /(?<animal>fox|cat) jumps over/;
const found = paragraph.match(capturingRegex);
console.log(found.groups); // {animal: "fox"}const paragraph = "The quick brown fox jumps over the lazy dog. It barked.";
const capturingRegex = /(?<animal>fox|cat) jumps over/;
const found = paragraph.match(capturingRegex);
console.log(found.groups); // {animal: "fox"}