为什么Regex集团被退回?

时间:2012-04-05 09:02:04

标签: regex

我在想......

写作时(js)

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

它返回:

["1234ABC4321", "ABC"]

我可以用, "ABC"]

替换(?:...)部分

但是,群组适用于:backreference,因此我可以在\1稍后引用它们。

问题:

为什么“ABC”会作为比赛的一部分返回? 如果他需要自己供以后参考,fine!但是不要将它保存在我的收藏中!

有没有逻辑(我确定有)?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

var t="1234ABC4321".replace(/ABC/, "");