1

我刚在想...

当我写(js)

var t="1234ABC4321".match(/.*(ABC).*/)

它返回:

["1234ABC4321", "ABC"]

我可以, "ABC"]通过(?:...)

但是,组是用于 : 的backreference,所以我可以\1稍后参考它们....

问题 :

为什么“ABC”作为匹配项的一部分返回?如果他自己需要它以供以后参考,fine!但不要把它放在我的收藏中!

有什么逻辑吗(我确定有)?

4

2 回答 2

3

我不确定我是否理解您的问题,但是在分组时,您得到的第一组是与正则表达式匹配的整个字符串。如果您不想获得辅助组 (the ABC),请删除括号 ( (and )),因为这些表示正则表达式中的组,因此此 regex:/.*ABC.*/应该为您提供 1 个 group being 1234ABC4321

于 2012-04-05T09:07:32.057 回答
2

逻辑是 match() 方法检查您的字符串是否与正则表达式匹配。如果是这样,它会返回与正则表达式匹配的字符串部分。如果您使用 () 指定分组,它也会返回组。

如果您希望从字符串中删除 ABC,请使用:

var t="1234ABC4321".replace(/ABC/, "");
于 2012-04-05T09:17:35.113 回答