JavaScript 创建正则表达式有两种方式: - 使用正则表达式字面量:var re = /abc/; - 调用 RegExp 对象的构造函数:var re = new RegExp("abc");

什么时候使用构造函数?

当正则表达式的模式会变发生改变,或者需要从其他地方得到时(例如用户输入),适合使用构造函数的方式。

匹配字符表

  • \:将其后的特殊字符转义为字面量
  • ^:匹配输入的开始
  • $:匹配输入的结束
  • *:匹配前一个表达式0次或者多次,等价于 {0,}
  • +:匹配前一个表达式1次或多次,等价于 {1,}
  • ?:匹配前一个表达式0次或者1次,等价于 {0,1}
  • .:匹配除了换行符(\n)之外的任何单个字符
  • (x):匹配 ‘x’ 并记住匹配项
  • (?:x):匹配 ‘x’ 但不记住匹配项
  • x(?=y): 匹配 ‘x’ 并且 ‘x’ 后面跟着 ‘y’,也叫作正向肯定查找
  • x(?!y):匹配 ‘x’ 并且 ‘x’ 后面不跟着 ‘y’,也叫作正向否定查找
  • x | y:匹配 ‘x’ 或者 ‘y’
  • {n}:匹配前一个字符 n 次
  • {n, m}:匹配前一个字符最少 n 次
  • [xyz]:匹配括号中的任意一个字符,可以使用 - 指定范围
  • [^xyz]: 匹配任何不在括号中的字符
  • \b:匹配一个词的边界
  • \B:匹配非单词边界
  • \d:匹配一个数字
  • \D:匹配一个非数字字符,等价于 [^0-9]
  • \f:匹配一个换页符
  • \n:匹配一个换行符
  • \r: 匹配一个回车符
  • \s:匹配一个空白字符
  • \S:匹配一个非空白字符
  • \t:匹配一个水平制表符
  • \v: 匹配一个垂直制表符
  • \w:匹配一个单字字符,等价于 [A-Za-z0-9_]
  • \W:匹配一个非单字字符,等价于 [^A-Za-z0-9_]