正则表达式

1. 定义正则表达式

  • 是使用字面量,以斜杠表示开始和结束(编译时新建正则表达式)。
    var reg1 = /hello \w{3,12}/g;
    
  • 使用RegExp构造函数(运行时新建正则表达式)
    var reg2 = new RegExp("hello \\w{3,12}",'g');
    

2. 正则对象的属性和方法

2.1 属性
  • ignoreCase:返回一个布尔值,表示是否设置了i修饰符,该属性只读。
  • global:返回一个布尔值,表示是否设置了g修饰符,该属性只读。
  • multiline:返回一个布尔值,表示是否设置了m修饰符,该属性只读。
#2.2 常用方法
  • test(): 检索字符串中指定的值。返回 true 或 false
  • exec(): 检索字符串中指定的值。匹配成功返回一个数组,匹配失败返回null。

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

在字符串内检索指定的值,匹配成功返回第一个匹配成功的字符串片段开始的位置,否则返回-1。 该方法会忽略g修饰符。

var reg=/javascript/ig;
console.log('hello Javascript Javascript Javascript'.search(reg));//6
3.2 match

在字符串内检索指定的值,匹配成功返回存放匹配结果的数组,否则返回null。如果没有设置全局匹配g,返回的数组只存第一个成功匹配的值。

var reg1=/javascript/i;
var reg2=/javascript/ig;
console.log('hello Javascript Javascript Javascript'.match(reg1));
//['Javascript']
console.log('hello Javascript Javascript Javascript'.match(reg2));
//['Javascript','Javascript','Javascript']

字符串的match方法与正则对象的exec方法非常类似:匹配成功返回一个数组,匹配失败返回null。

如果正则表达式带有g修饰符,则该方法与正则对象的exec方法行为不同,会一次性返回所有匹配成功的结果。

var s = 'abba';
var r = /a/g;

s.match(r) // ["a", "a"]
r.exec(s) // ["a"]

设置正则表达式的lastIndex属性,对match方法无效,匹配总是从字符串的第一个字符开始。

var r = /a|b/g;
r.lastIndex = 7;
'xaxb'.match(r) // ['a', 'b']
r.lastIndex // 0
3.3 replace

替换与正则表达式匹配的子串,并返回替换后的字符串。在不设置全局匹配g的时候,只替换第一个匹配成功的字符串片段。

var reg1=/javascript/i;
var reg2=/javascript/ig;
console.log('hello Javascript Javascript Javascript'.replace(reg1,'js'));
//hello js Javascript Javascript
console.log('hello Javascript Javascript Javascript'.replace(reg2,'js'));
//hello js js js
3.4 split

把字符串分割为字符串数组。

var reg=/1[2,3]8/;
console.log('hello128Javascript138Javascript178Javascript'.split(reg));
//['hello','Javascript','Javascript178Javascript']

results matching ""

    No results matching ""