1

这是标志忽略案例的代码示例。我预计只会收到一场比赛。

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

结果

a = [采样] [上午] [p]

我应该有一个= [Samp]

如果你用 g 改变 i 标志

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

惊喜(至少对我来说)结果只有一个元素

a = [采样]

4

2 回答 2

2

gjavascript regex API 非常不直观,因为它根据-flag执行各种魔术。

我将介绍.match行为方式:

  • 如果没有g-flag ,则.match返回一个完全匹配的数组以及所有捕获组,或者null在不匹配的情况下返回。

  • 使用g-flag.match返回一个包含所有完整匹配项的数组,并且捕获组没有任何区别。null如果没有匹配项。

于 2012-08-07T15:02:54.300 回答
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";

于 2012-08-07T15:00:36.970 回答