JavaScript RegExp忽略大小写标志与全局匹配标志
下面是标志忽略案例的代码示例。我只希望得到一场比赛JavaScript RegExp忽略大小写标志与全局匹配标志,javascript,regex,Javascript,Regex,下面是标志忽略案例的代码示例。我只希望得到一场比赛 var str = "Sample text"; var a = new Array(); a = str.match(/S(am)(p)/i); 结果 a=[Samp][am][p] 我应该有一个=[Samp] 如果你用g改变i标志 var str = "Sample text"; var a = new Array(); a = str.match(/S(am)(p)/g); 令人惊讶的是(至少对我来说)结果只有一个要素 a=[Samp
var str = "Sample text";
var a = new Array();
a = str.match(/S(am)(p)/i);
结果
a=[Samp][am][p]
我应该有一个=[Samp]
如果你用g改变i标志
var str = "Sample text";
var a = new Array();
a = str.match(/S(am)(p)/g);
令人惊讶的是(至少对我来说)结果只有一个要素
a=[Samp]
a = str.match(/S(am)(p)/i);
返回第一个匹配的字符串,$1$2
a=str.match(/S(am)(p)/g)
返回匹配的数组(此处仅一个)
如果你的绳子是那样贴花的
var str = "Sample text Sample text";
/g return Samp Samp,当您的regexp看起来像
/S(.m)(p)/g
并且字符串看起来像“Sample text Simple text”时,它很有用代码>javascript正则表达式API非常不直观,因为它根据g
-标志执行各种魔法
我将介绍.match
的行为:
- 不带
g
-flag.match
返回完全匹配加上所有捕获组的数组,如果不匹配,则返回null
- 使用
g
-flag.match
返回一个包含所有完整匹配项的数组,捕获组不会产生任何影响<如果没有匹配项,则代码>null
i
表示不区分大小写的匹配。其他匹配由捕获组捕获()
match()
函数如果没有g
标志,则最多只返回1个匹配,从索引1捕获的文本。我认为您需要重新阅读文档。关于重复的可能重复:询问者似乎对匹配组的工作方式有误解,但这两个问题处理的是match()的相同行为
。