在javascript中使用组意外结果的正则表达式

时间:2015-10-12 13:02:29

标签: javascript regex

这是代码:

reg = /(\d{3}\.){3}\d{3}/;
var str8 = "111.222.333.444";
console.log(str8.match(reg));

结果:数组[“111.222.333.444”,“333”。 ] 在firefox中测试

我可以期待的第一个结果,但我不能指望的是第二个结果。 任何人都可以告诉我为什么它得到第二个结果并告诉我如何修复只获得 第一个。

感谢〜!

1 个答案:

答案 0 :(得分:1)

捕获组显示在String#match(不含/g修饰符)结果作为结果数组的一部分。

  

如果正则表达式不包含g标志,则返回与RegExp.exec()相同的结果。

exec()帮助说:

  

如果匹配成功,exec()方法将返回一个数组并更新正则表达式对象的属性。返回的数组将匹配的文本作为第一项,,然后匹配包含已捕获文本的每个捕获括号的一个项目

要摆脱它们,只需用非捕获组替换捕获组:

reg = /(?:\d{3}\.){3}\d{3}/;
//      ^^
var str8 = "111.222.333.444";
console.log(str8.match(reg));

结果:["111.222.333.444", index: 0, input: "111.222.333.444"]