JavaScript 正则表达式中global模式的特性

  作者:bea

返回 Boolean 值,指出正则表达式使用的global 标志 (g) 的状态。默认值为 false。只读。 rgExp.global 必选项 rgExp 参数是正则表达式对象。 如果正则表达式设置了global 标志,那么global 属性返回 true,否则返回 false。 使用 global 标志表明在被查找的字符串中搜索操作将查找所有符合的项,而不仅仅是第一个。这也被称为全局匹配。 一直不是很清楚javascript的global到底表现在哪些方面,所以今天特地做
返回 Boolean 值,指出正则表达式使用的global 标志 (g) 的状态。默认值为 false。只读。 rgExp.global 必选项 rgExp 参数是正则表达式对象。 如果正则表达式设置了global 标志,那么global 属性返回 true,否则返回 false。 使用 global 标志表明在被查找的字符串中搜索操作将查找所有符合的项,而不仅仅是第一个。这也被称为全局匹配。
一直不是很清楚javascript的global到底表现在哪些方面,所以今天特地做了几个测试:


var str = 'bbaaabb',
  reg = /^b|b$/;
  while(reg.test(str)){
    str = str.replace(reg,'');
    console.log(reg.lastIndex + ":" + str);
  }

最终结果:


//0:baaabb
//0:aaabb
//0:aaab
//0:aaa

但是如果稍做一些修改


var str = 'bbaaabb',
  reg = /^b|b$/g;
  while(reg.test(str)){
    str = str.replace(reg,'');
    console.log(reg.lastIndex + ":" + str);
  }

最终结果则是:


//0:baaab
//0:aaa

这样的结果说明,global模式下,在匹配到了开始的b字符后,还将继续匹配结尾的b字符,从而忽视掉中间"|"操作符。
JavaScript 正则表达式中global模式的特性就给大家介绍这么多,希望对大家有所帮助!


有用  |  无用

猜你喜欢