字符
|
指示在两个或多个项之间进行选择。类似js中的或,又称分支条件。/
正则表达式模式的开始或结尾。反斜杠字符,用来转义。
-
连字符 当且仅当在字符组[]的内部表示一个范围,比如[A-Z]就是表示范围从A到Z;如果需要在字符组里面表示普通字符-,放在字符组的开头即可。.
匹配除换行符 之外的任何单个字符。d
等价[0-9],匹配0到9字符。D
等价[^0-9],与d
相反。w
与以下任意字符匹配:A-Z、a-z、0-9 和下划线,等价于 [A-Za-z0-9]。W
与w相反,即 [^A-Za-z0-9]
限定符(量词字符)
显示限定符位于大括号 {} 中,并包含指示出现次数上下限的数值;*+?
这三个字符属于单字符限定符:
{n}
正好匹配 n 次。{n,}
至少匹配 n 次。{n,m}
匹配至少 n 次,至多 m 次。*
等价{0,}+
等价{1,}?
等价{0,1}
正则表达式是有优先级的
转义符
(), (?!), (?=), []
括号和中括号*、+、?、{n}、{n,}、{n,m}
限定符- 任何元字符
^、$、
定位点和序列 |
替换
JS 是 NFA 引擎。
NFA 引擎的特点:
- 以贪婪方式进行,尽可能匹配更多字符。
- 急于邀功请赏,所以最左子正则式优先匹配成功,因此偶尔会错过最佳匹配结果(多选条件分支的情况)。
- 回溯(backtracking),导致速度慢。
举个贪婪与回溯结合的例子:
"AB01CD2AB3CD45CEff".match('AB.*CD')
// 返回 ["AB01CD2AB3CD"]
来自 http://web.jobbole.com/89221/?utm_medium=hao.caibaojian.com&utm_source=hao.caibaojian.com