JavaScript RegExp忽略大小写标志与全局匹配标志

时间:2012-08-07 14:52:09

标签: javascript regex

这是标志忽略大小写的代码示例。我原本只能参加一场比赛。

var str = "Sample text";
var a = new Array();
a = str.match(/S(am)(p)/i);

结果

a = [Samp] [am] [p]

我应该有一个= [Samp]

如果你用g

改变我的旗帜
var str = "Sample text";
var a = new Array();
a = str.match(/S(am)(p)/g);

惊讶(至少对我而言)结果只有一个元素

a = [Samp]

2 个答案:

答案 0 :(得分:2)

javascript正则表达式API非常不直观,因为它根据g - 标志执行各种魔法。

我将介绍.match的行为:

  • 没有g - 标记.match会返回完整匹配的数组以及所有捕获组,如果不匹配,则返回null

  • 使用g - 标志.match返回所有完整匹配的数组,捕获组不会产生任何影响。 null如果没有匹配项。

答案 1 :(得分:0)

a = str.match(/S(am)(p)/i);

返回第一个匹配的字符串,$ 1 $ 2

a = str.match(/ S(am)(p)/ g);

返回匹配的数组(此处只有一个)

如果你的字符串是那样的

var str = "Sample text Sample text";

/ g返回Samp Samp,当你的正则表达式看起来像/S(.m)(p)/g并且字符串看起来像"Sample text Simple text";

时,它很有用