ES5 —— RegExp

RegExp 对象

生成一个 RegExp 对象有三种方式,字面量,构造函数均可以:正则表达式

// 字面量
var newExp1 = /pattern/ flags;
// 构造函数
var newExp2 = new RegExp(pattern [, flags]);

字面量方式参数没必要添加引号,而构造函数方式,参数加引号。数组

其中,pattern 为正则表达式文本,flags 表明标志,常见的标志有:函数

g 全局匹配
i 忽略大小写
m 多行
u Unicode
y 粘性匹配; 仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(而且不尝试从任何后续的索引匹配)

正则表达式中特殊字符的含义

字符类别

  1. “ . ” 点号,小数点,匹配任意单个字符(但行结束符 \n \r \u2028 \u2029 除外),要注意的是在字符集中,点( . )失去其特殊含义,并匹配一个字面点( . )。多行制表符中能够使用 “[^]” 来匹配任意字符。prototype

  2. \d 匹配任意数字,至关于 [0-9]
  3. \D 匹配任意非数字,至关于 [^0-9]
  4. \w 匹配任意来自基本拉丁字母表中的字母数字字符,至关于 [A-Za-z0-9]
  5. \W 匹配任意不是基本拉丁字母表中单词,至关于[^A-Za-z0-9]
  6. \s 包括空格、制表符、换页符、换行符和其余 Unicode 空格
  7. \S 匹配一个非空白符。
  8. \t 水平制表符(tab)
  9. \r 回车符
  10. \n 换行符
  11. [\b] 退格符code

字符集合

  1. [XYZ] 一个字符集合,匹配集合中的任意‘一个’字符,也能够使用[A-Z]的模式
  2. [^XYZ]匹配任意不在括号内的字符,同理,也能够使用[^A-Z]的模式

边界

  1. “^” 匹配输入开始 /^A/
  2. “$” 匹配输入结束 /Z$/
  3. “\b” 匹配一个零宽单词边界 如 /\bno/ 匹配 at noon 中的 "no" , 用法 /\bA/,/A\b/
  4. “\B” 匹配一个零宽非单词边界

数量词

  1. A* 匹配0次或者屡次
  2. A+ 匹配至少一次或者屡次
  3. A?,A+? 最小可能匹配,例如,/".?"/ 匹配 '"foo" "bar"' 中的 '"foo"',而 * 后面没有 ? 时匹配 '"foo" "bar"'。
  4. A? 匹配前面的模式 x 0 或 1 次。例如,/e?le?/ 匹配 "angel" 中的 "el","angle" 中的 "le"。
  5. x(?=y)只有当 x 后面紧跟着 y 时,才匹配 x。
  6. x(?!y)只有当 x 后面不是紧跟着 y 时,匹配 x 。
  7. x|y 匹配 x 或 y
  8. x{n} n 是一个正整数。前面的模式 x 连续出现 n 次时匹配。
  9. x{n,} n 是一个正整数。前面的模式 x 连至少连续出现 n 次时匹配。
  10. x{n,m} n 和 m 为正整数。前面的模式 x 连续出现至少 n 次,至多 m 次时匹配。

分组

  1. (x) 匹配 x 而且捕获匹配项
  2. \n n是一个正整数。一个反向引用(back reference),指向正则表达式中第 n 个括号(从左开始数)中匹配的子字符串。
  3. (?:x) 匹配 x 不会捕获匹配项。这被称为非捕获括号(non-capturing parentheses)。匹配项不可以从结果数组的元素 [1], ..., [n] 或已被定义的 RegExp 对象的属性 $1, ..., $9 再次访问到。

RegExp 经常使用方法

  1. RegExp.prototype.exec(str) 匹配字符串,返回数组
  2. RegExp.prototype.test(str) 匹配字符串,返回布尔值
  3. RegExp.prototype.toString() 无输入参数,返回对象字面量的字符串形式

具体的参见MDNregexp

相关文章
相关标签/搜索