JavaScript — RegExp

2018-06-21  本文已影响0人  阳光小羊羊的草场

var expression = / pattern / flags;
flag有三种:
g:表示全局(global)模式;
i:表示不区分大小项
m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。

正则表达式中的元字符包括:
( [ { \ ^ $ | ) ? * + . ] }
若匹配的字符串中包含以上字符,就必须对它们进行转义。

1. 定义正则表达式:

— 字面量形式
var pattern1 = /[bc]at/i; //匹配第一个“bat”或“cat”,不区分大小写

— 使用RegExp 构造函数
var pattern2 = new RegExp("[bc]at", "i");

2. RegExp 实例属性

RegExp 的每个实例都具有下列属性,通过这些属性可以取得有关模式的各种信息。

3. RegExp 实例方法

  var text = "mom and dad and baby";
  var pattern = /mom( and dad( and baby)?)?/gi;
  var matches = pattern.exec(text);

注: 对于 exec() 方法而言,即使在模式中设置了全局标志(g),每次也只返回第一个匹配项的信息。在不设置全局标志的情况下,在同一个字符串上多次调用 exec() 将始终返回第一个匹配项的信息。而在设置全局标志的情况下,每次调用 exec() 则都会在字符串中继续查找新匹配项。

var pattern = new RegExp("\\[bc\\]at", "gi");
alert(pattern.toString()); // /\[bc\]at/gi
alert(pattern.toLocaleString()); // /\[bc\]at/gi

4. RegExp 构造函数属性

构造函数属性
var text = "this has been a short summer";
var pattern = /(.)hort/g;

if (pattern.test(text)){
    console.log(RegExp.input);  // this has been a short summer
    console.log(RegExp.leftContext);  // this has been a
    console.log(RegExp.rightContext);  //  summer
    console.log(RegExp.lastMatch);  // short
    console.log(RegExp.lastParen);  // s
    console.log(RegExp.multiline);  // false, chrome 输出 undefined
}
上一篇 下一篇

猜你喜欢

热点阅读