创建正则表达式的方式
字面量或称为直接量方式(用斜杠来表示正则表达式的开始和结束)
eg: var reg = /^\w/;
构造函数方式
eg: var reg = new RegExp("^\\w", "i");
Attentions
- 因为简洁方便,通过字面量的方式创建正则表达式居多。
- ES5规定正则表达式直接量的每次运算都返回新对象。
- 由于RegExp构造函数的模式参数是字符串,所以在某些情况下要对字符串进行双重转义。
正则对象的属性和方法
属性(5个)
- ignoreCase:返回一个布尔值,表示是否设置了i修饰符,该属性只读。
- global:返回一个布尔值,表示是否设置了g修饰符,该属性只读。
- multiline:返回一个布尔值,表示是否设置了m修饰符,该属性只读。
- lastIndex:返回下一次开始搜索的位置。该属性可读可写,但是只在设置了g修饰符时有意义。
- source:返回正则表达式的字符串形式,该属性只读。
|
|
方法(3个)
- test(): 检索字符串中的指定值。返回值是 true 或 false。
- exec(): 如果发现匹配,就返回一个数组,成员是每一个匹配成功的子字符串,否则返回null。
- compile(): 用于改变 RegExp
|
|
语法
修饰符及其描述
- i 执行对大小写不敏感的匹配。
- g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
- m 执行多行匹配。
元字符(Metacharacter)是拥有特殊含义的字符:
|
|
位置字符
- ^ 表示字符串的开始位置
- $ 表示字符串的结束位置
attentions:
- 当正则表达式用m(即multiline)修饰时,则^可以匹配每一行的行首,$可以匹配每一行的行末
- ^用于中括号表示取非,简单地说,就是排除中括号中的所有元素。
选择字符
- 竖线符号”|”在正则表达式中表示“或关系”(OR)
- 方括号”[]”所有可供选择的字符都放在方括号内,比如[xyz] 表示x、y、z之中任选一个匹配。
- 连字符”-“表示字符的连续范围
|
|
转义符
正则模式中,需要用斜杠转义的,一共有12个字符:^、.、[、$、(、)、、*、+、?、{和\。需要特别注意的是,如果使用RegExp方法生成正则对象,转义需要使用两个斜杠,因为字符串内部会先转义一次。如果是字面量生成,两次转义反而会弄巧成拙。12345eg: (new RegExp('1\+1')).test('1+1')// false (new RegExp('1\\+1')).test('1+1')// true /1\\+1/.test('1+1') //false /1\+1/.test('1+1') //true
重复类
|
|
参考文档
- 《JavaScript高级程序设计》
- JavaScript 标准参考教程