正则表达式给出无效的组错误

时间:2015-04-28 06:14:24

标签: jquery regex

我正在尝试在空格和冒号之间找到一个字符串。为此,我有以下正则表达式,它给了我一个'无效的组名称'错误(在python中也一样):

(?<content>[^ :]*:$)

这是RegexDemo

Same Expression在PHP中没有错误 Demo

Javascript表达式: -

var reg = new RegExp("(?<content>[^ :]*):$", "g");`

有谁可以告诉我为什么会这样?

修改

示例输入:

DefVariable   変数名:配列「n]
DefVariable  変数名:string
DefVariable   変数名:int
DefVariable   変数名:decimal
DefVariable   変数名:日付
DefVariable   変数名:時間

示例输出:

可以匹配来自每一行的変数名而不是変数名任何角色都会来。

2 个答案:

答案 0 :(得分:0)

您的正则表达式不正确:

(?<content>[^ :]*:$)

Javascript中不存在(?<group>)符号。只有(numbered group)(?:non capturing)和外观。如果我理解正确,你需要这个:

\s([^ :]*):$

请参阅演示here

答案 1 :(得分:0)

您无法使用named capturing groups in JavaScript regex。您将只需使用编号,如下所示:

 ([^ :]*:)

此外,您在正则表达式中使用$(字符串/行的结尾)锚点,但在示例中,全宽冒号后仍有一些字符。因此,即使删除了命名捕获,正则表达式也不会匹配。

说明:

  • - 文字空间
  • ([^:]*:) - 一个捕获组,其字符串没有空格和全宽冒号,大小为0或更大,全宽冒号
  • $ - 字符串/行的结尾。

See demo

在PHP中,named groups存在。,您可以使用(?<name>...)(?'name')。在Python中,它们也存在,但它们的编写方式有点不同:(?P<tag>...)