JS Regular Expression
JS正则表达式
什么是JS正则表达式
正则表达式是计算机科学的一个概念,正则表达式使用单个字符串来描述,匹配一系列符合某个句法规则的字符串。
在很多文本编辑器里,正则表达式常被用来检索替换某些符合某个模式的文本。
正则表达式的创建
1.构造函数
1 | var reg = new RegExp('<%[^%]+%>','g'); |
2.字面量
1 | var reg =/<%[^%]%>/g; |
最后的g代表全局搜索,不添加的画搜索到第一个结果停止搜索
预定义类
字符 | 等价类 | 含义 |
---|---|---|
. | [^\r\n] | 除了回车符和换行符之外的所有字符 |
\d | [0-9] | 数字字符 |
\D | [^0-9] | 非数字字符 |
\s | [\t\n\x0B\f\r] | 空白符 |
\S | [^\t\n\x0B\f\r] | 非空白符 |
\w | [a-zA-Z_0-9] | 单词字符,字母,数字下划线 |
\W | [^a-zA-Z_0-9] | 非单词字符 |
边界
正则表达式还提供里几个常用的边界匹配字符串
字符 | 含义 |
---|---|
^ | 以xxx开头 |
$ | 以xxx结尾 |
\b | 单词边界 |
\B | 非单词边界 |
量词
正则表达式还提供里几个常用的边界匹配字符串
字符 | 含义 |
---|---|
? | 出现零次或一次(最多出现一次) |
+ | 出现一次或多次(至少出现一次) |
* | 出现零次或多次(任意次) |
{n} | 出现n次 |
{n,m} | 出现n到m次 |
{n,} | 至少出现n次 |
前瞻
字符 | 含义 |
---|---|
exp1(?=exp2) | 匹配后面是exp2的exp1 |
exp1(?!=exp2) | 匹配后面不是exp2的exp1 |
贪婪模式与非贪婪模式
贪婪模式
在贪婪模式下(一般为默认模式),正则引擎尽可能多的重复匹配字符
也就是匹配时先忽略下一个条件,优先以当前条件进行匹配,完成当前条件之后才开始回溯以下一条件进行匹配
非贪婪模式
非贪婪模式和贪婪模式相反,可通过在代表适量的表示符后放置?来开启非贪婪模式
如?,+?甚至是???,
非贪婪模式是不只看当前条件还看下一条件进行检索,正则引擎尝试用最小可能的重复次数来进行匹配
例
1 | var str = 'a "witch" and her "broom" is one'; |
在贪婪模式下,匹配到 “witch” and her “broom” 一个字符串
而在非贪婪模式下匹配到的是”witch”和”broom”