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

Mak*_*Vi. 21 javascript regex

我有以下正则表达式:

/(?<={index:)\d+(?=})/g
Run Code Online (Sandbox Code Playgroud)

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

some text{index:1}{id:2}{value:3}
Run Code Online (Sandbox Code Playgroud)

这个表达式适用于PHP,但它在javascript中不起作用,我收到以下错误:

未捕获的SyntaxError:无效的正则表达式:/(?<= {index:)\ d +(?=})/:无效的组

我需要修理什么?

谢谢.

mik*_*ike 51

(?<= )是一个积极的看法.JavaScript的RegEx风格不支持lookbehinds(但它确实支持lookaheads).

  • 实际上,看起来像lookbehinds正式是JS Regex规范的一部分(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#assertions),但仅在Chromium中支持发布(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Browser_compatibility) (4认同)
  • 你是对的,对特定表达的任何帮助? (2认同)

cdh*_*wie 10

JavaScript不支持look-behind断言.改为使用此模式:

/{index:(\d+)}/g
Run Code Online (Sandbox Code Playgroud)

然后提取组中捕获的值.


Phr*_*ogz 5

var str = "some text{index:1}{id:2}{value:3}";
var index = str.match(/{index:(\d+)}/);
index = index && index[1]*1;
Run Code Online (Sandbox Code Playgroud)