这是标志忽略大小写的代码示例。我原本只能参加一场比赛。
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]
答案 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";