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 除外),要注意的是在字符集中,点( . )失去其特殊含义,并匹配一个字面点( . )。多行制表符中可以使用 “[^]” 来匹配任意字符。

  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] 退格符

字符集合

  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() 无输入参数,返回对象字面量的字符串形式

具体的参见MDN

posted @ 2017-08-23 16:48  我是一个毛毛虫  阅读(359)  评论(0编辑  收藏  举报