JavaScript 正则表达式异常(无效组)

IT技术 javascript regex
2021-03-08 11:57:42

我有以下正则表达式:

/(?<={index:)\d+(?=})/g

我试图在这样的字符串中找到索引整数:

some text{index:1}{id:2}{value:3}

该表达式适用于 php,但不适用于 javascript,我收到以下错误:

Uncaught SyntaxError: Invalid regular expression: /(?<={index:)\d+(?=})/: Invalid group

我需要修复什么?

谢谢。

3个回答

(?<= )是积极的回顾。JavaScript 的 RegEx 风格不支持lookbehinds(但它支持lookaheads)。

实际上,lookbehinds 看起来是 JS Regex 规范的正式一部分(developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...),但仅在 Chromium 发布时支持(developer.mozilla.org/ en-US/docs/Web/JavaScript/Reference/... )
2021-05-19 11:57:42

JavaScript 不支持后视断言。请改用此模式:

/{index:(\d+)}/g

然后提取在组中捕获的值。

@Alan Moore,可能是我做错了什么,但"some text{index:1}{id:2}{value:3}".match(/{index:(\d+)}/g)[0]返回{index:1}"some text{index:1}{id:2}{value:3}".match(/{index:(\d+)}/g)[1]返回“未定义”。
2021-04-26 11:57:42
@negative:注意周围的括号\d+整数在组#1 中捕获。
2021-05-14 11:57:42
它提取了整个内容,在我的情况下,我只需要一个整数。
2021-05-17 11:57:42
var str = "some text{index:1}{id:2}{value:3}";
var index = str.match(/{index:(\d+)}/);
index = index && index[1]*1;
啊,我明白了,没有/g真正的帮助 =)
2021-05-15 11:57:42