js正则表达式学习笔记
正则表达式以前看书学过,针对的是js的正则表达式,其他编程语言的有些正则匹配规则是js不适用的,如:类似/(?<=exp)/
这样的断言
常用代码
常用元字符
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
常用的限定符
代码 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
反义代码
代码/语法 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
i:忽略小写
g:全局匹配
|:或运算符
分组
(...)
表示一个捕获型分组,一个捕获型分组将赋值它所匹配的文本,并将其放入result数组中,并且指定编号,第一个分组的编号是1;
(?:...)
表示一个非捕获型分组,如果需求允许用非捕获型分组替代捕获型分组,因为捕获会有性能上的损失
//捕获分组
var pattern = /\w{4}(\d{4})(\w{2})/;
var result = pattern.exec("yunn0871cg");
console.log("city code = "+result[1]+", county code = "+result[2]);
//VM4909:3 city code = 0871, county code = cg
//非捕获分组
var pattern = /\w{4}(?:\d{4})(\w{2})/;
var result = pattern.exec("yunn0871cg");
console.log("city code = "+result[1]+", county code = "+result[2]);
//VM4934:3 city code = cg, county code = undefined
ps:(此处还是不太懂)
最长匹配和最短匹配
//最长匹配
"aabab".match(/a.*b/)
["aabab"]
//最短匹配
"aabab".match(/a.*?b/g)
["aab", "ab"]
参考文献:
正则表达式30分钟入门教程
正则表达式语言 - 快速参考