javascript正则表达式

字符

  1. | 指示在两个或多个项之间进行选择。类似js中的或,又称分支条件
  2. / 正则表达式模式的开始或结尾。
  3. \ 反斜杠字符,用来转义。
  4. - 连字符 当且仅当在字符组[]的内部表示一个范围,比如[A-Z]就是表示范围从A到Z;如果需要在字符组里面表示普通字符-,放在字符组的开头即可。
  5. . 匹配除换行符 \n 之外的任何单个字符。
  6. \d 等价[0-9],匹配0到9字符。
  7. \D 等价[^0-9],与\d相反。
  8. \w 与以下任意字符匹配:A-Z、a-z、0-9 和下划线,等价于 [A-Za-z0-9]。
  9. \W 与\w相反,即 [^A-Za-z0-9]

限定符(量词字符)

显示限定符位于大括号 {} 中,并包含指示出现次数上下限的数值;*+? 这三个字符属于单字符限定符

  1. {n} 正好匹配 n 次。
  2. {n,} 至少匹配 n 次。
  3. {n,m} 匹配至少 n 次,至多 m 次。
  4. * 等价{0,}
  5. + 等价{1,}
  6. ? 等价{0,1}

正则表达式是有优先级的

  1. \ 转义符
  2. (), (?!), (?=), [] 括号和中括号
  3. *、+、?、{n}、{n,}、{n,m} 限定符
  4. 任何元字符^、$、\ 定位点和序列
  5. | 替换

JS 是 NFA 引擎。
NFA 引擎的特点:

  • 以贪婪方式进行,尽可能匹配更多字符。
  • 急于邀功请赏,所以最左子正则式优先匹配成功,因此偶尔会错过最佳匹配结果(多选条件分支的情况)。
  • 回溯(backtracking),导致速度慢。

举个贪婪与回溯结合的例子:

"AB01CD2AB3CD45CEff".match('AB.*CD')

// 返回 ["AB01CD2AB3CD"]
 

来自 http://web.jobbole.com/89221/?utm_medium=hao.caibaojian.com&utm_source=hao.caibaojian.com

 

 

posted @ 2016-12-10 21:39  wanhong  阅读(121)  评论(0编辑  收藏  举报