Javascript正则表达式中的非捕获组

时间:2014-01-30 13:19:59

标签: javascript regex regex-lookarounds regex-group

我在Javascript中匹配以下正则表达式中的字符串:

(?:new\s)(.*)(?:[:])

我使用函数的字符串是“new Tag:var;” 返回的内容只是“Tag”,而是返回一个包含“new Tag:”的数组,以及所需的结果。

我发现我可能需要使用lookbehind,但由于它在Javascript中不受支持,我有点迷失。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

  • \\s(双重转义)仅用于创建RegExp个实例。
  • 此外,您的正则表达式在.*中使用的贪婪模式可能与所需的匹配程度更高。

让它变得非贪婪:

(?:new\s)(.*?)(?:[:])

或者更好地使用否定:

(?:new\s)([^:]*)(?:[:])

答案 1 :(得分:1)

好吧,我真的不明白你为什么要为你想要提取的东西制作如此复杂的正则表达式:

(?:new\\s)(.*)(?:[:])

虽然可以使用以下方法解决:

s = "new Tag:";
var out = s.replace(/new\s([^:]*):.*;/, "$1")

你只有一个你正在寻找的捕获组。