修饰符
i: 忽略大小写
var pattern = /abc/i;
var string = "mdABc";
console.log(string.match(pattern)); //["ABc", index: 2, input: "mdABc", groups: undefined]
g: 全局,即不会在匹配到第一项后就停止,而是接着往后面匹配
var pattern = /abc/g;
var string = "mdabcLcabc";
console.log(string.match(pattern)); //["abc", "abc"]
m:多行匹配,当需要匹配的字符串中出现 \n或\r的时候
var pattern = /abc$/;
var string = "mdabc\n Lca";
console.log(string.match(pattern)); //null
var pattern = /abc$/m;
var string = "mdabc\n Lca";
console.log(string.match(pattern)); //["abc", index: 2, input: "mdabc↵ Lca", groups: undefined]
常用的元字符
var string = "123 dfg2 !&";
元字符 | 描述 | 相等于 | 例子 | 例子结果 |
\d | 数字字符 | [1-9] | string.match(/\d/g) | ["1", "2", "3", "2"] |
\D | 非数字字符 | [^1-9] | string.match(/\D/g) | ["d", "f", "g", "!", "&"] |
\w | 单词字符 | [A-Za-z0-9_] | string.match(/\w/g) | ["1", "2", "3", "d", "f", "g", "2"] |
\W | 非单词字符 | [^A-Za-z0-9_] | string.match(/\W/g) | [" ", " ", " ", "!", "&"] |
\s | 空白字符(几个空格就是几个,连起来的空格不会被算为一个) | string.match(/\s/g) | [" ", " ", " "] | |
\S | 非空白字符 |
匹配的要求
var string = "123 dfg2 !&";
描述 | 例子 | 例子结果 | |
^n | 从第一个匹配 | string.match(/^\d/g) | ["1"] |
第一位开始,一遇到不匹配,就不成功 | string.match(/^\W/g) | null | |
n$ | 从最后开始匹配 | string.match(/!&$/g) | //["!&"] |
最后一位开始,一遇到不匹配,就不成功 | string.match(/\d$/g) | null | |
n+ | 匹配一个或多个n | string.match(/14+/g) | null |
n* | 匹配零个及以上n | string.match(/14*/g) | ["1"] |
n? | 匹配零个及以上n | string.match(/14?/g) | ["1"] |
n{X} | 规定匹配X个n序列(X:连续的数量)的字符串 | string.match(/2{2}/g) | null |
n{X,} | 规定匹配至少X个n序列(X:连续的数量)的字符串 | string.match(/2{1,}/g) | ["2", "2"] |
n{X, Y} | 规定匹配X到Y个n序列(X:连续的数量)的字符串 | string.match(/2{1,2}/g) | ["2", "2"] |
方括号
var string = "123df52 !&";
描述 | 例子 | 例子结果 | |
[abc] | 匹配方括号中任意一个字符 | string.match(/[345]/g) | ["3", "5"] |
[^abc] | 匹配方括号以外的字符,[]内的^表示否 | string.match(/[^123df5]/g) | [" ", "!", "&"] |
[0-9] | 匹配所有数字 | string.match(/[1-9]/g) | ["1", "2", "3", "5", "2"] |
[a-z] | 匹配所有小写字母 | string.match(/[a-z]/g) | ["d", "f"] |
[A-Z] | 匹配所有大写字母 | ||
[\u4e00-\u9fa5] | 匹配中文 |
匹配获取到对应的字符串(获取多个加g不再展开)
获取完全匹配的子串
'asdfgh'.match(/asd/);
// ["asd", index: 0, input: "asdfgh", groups: undefined]
获取某种规则的子串
'asd123fgh'.match(/\d{3}/);
// ["123", index: 3, input: "asd123fgh", groups: undefined]
获取两端之间的子串(不包含两端)
'<div>hello</div>'.match(/(?<=\<div>).*?(?=\<\/div>)/);
// ["hello", index: 5, input: "<div>hello</div>", groups: undefined]
获取两端之间的子串(包含起始端)
'<div>hello</div>'.match(/(?=\<div>).*?(?=\<\/div>)/);
// ["<div>hello", index: 0, input: "<div>hello</div>", groups: undefined]
获取两端之间的子串(包含末端)
'<div>hello</div>'.match(/(?<=\<div>).*?(?<=\<\/div>)/);
// ["hello</div>", index: 5, input: "<div>hello</div>", groups: undefined]