RegExp对象

RegExp对象表示正则表达式,用于对字符串执行检索匹配。

创建RegExp对象的方法

  1. 使用字面量创建:var reg = new RegExp(pattern,modifiers)
  2. 使用new创建:var reg =/pattern/modifiers;

    pattern:模式,描述了一个表达式模型 modifiers:修饰符,描述了检索是否全局,区分大小写等;

修饰符

修饰符 描述
i 执行对大小写不敏感的匹配
g 执行全局匹配
m 执行多行匹配
y(es6新增) “粘连”修饰符,与g类似,也是执行全局匹配,但与之不同的是,g修饰符只要剩余的位置存在就可以匹配,而y修饰符必须确保匹配之后从剩余的第一个位置开始匹配
u(es6新增) 可以处理四个字节的UTF-16编码

对象属性

属性 描述
global RegExp对象是否具有标志g
ignoreCase RegExp对象是否具有标志i
lastIndex 一个整数,标识下一次匹配的字符位置
multiline RegExp对象是否具有标志m
source 正则表达式的源文本

对象方法

方法 描述
test 检索字符串中指定的值,找到了返回true,没找到返回false
exec 检索字符串中指定的值,找到了返回值(是个数组,包含该值及对应的位置),没找到返回null
compile 编译正则表达式,也可以修改原来的表达式

String对象支持正则表达式的方法

方法 描述
match 找到一个或多个与正则表达式相匹配的字符串
replace 替换与正则表达式匹配的字符串
search 检测与正则表达式相匹配的值

元字符

元字符 描述
. 查找单个字符,除了换行和结束符
\w 查找单词字符(数字、大小写英文字母、下划线)
\W 查找单词字符(非数字、大小写英文字母、下划线)
\d 匹配数字字符
\D 匹配非数字字符
\s 匹配空白字符(空格、tab、换行、换页)
\S 匹配非空白字符
\b 匹配单词边界
\B 匹配非单词边界
\n 查找换行符
\f 查找换页符
\r 查找回车符
\t 查找制表符
\v 查找垂直制表符
\xxx 查找以八进制数xxx规定的字符
\xdd 查找以十六进制数dd规定的字符
\uxxxx 查找以十六进制数xxx规定的Unicode字符

量词

量词 描述
n+ 匹配包含至少一个n字符
n* 匹配包含0个或多个n字符
n? 匹配0个或1个n字符
{a} 匹配a个字符
{a,} 匹配至少a个字符
{a,b} 匹配a到b个字符

正则表达式模式

表达式 描述
x|y 匹配x或y字符
( ) 将括号里面的字符作为整体进行匹配,括号中的内容是一个子表达式,也叫分组
[xyz] 匹配括号中的任意字符
[^xyz] 匹配除了括号中的任意字符
/^ 以…开头
[a-z] 匹配a-z的任意字符
[^a-z] 匹配除了a-z的任意字符
(?=pattern) 正向先行断言,代表一个字符,例如对”a regular expression”这个字符串,要想匹配regular中的re,但不能匹配expression中的re,可以用”re(?=gular)”,该表达式限定了re右边的位置,这个位置之后是gular,但并不消耗gular这些字符,将表达式改为”re(?=gular).”,将会匹配reg,元字符.匹配了g,括号这一砣匹配了e和g之间的位置。