Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript regular expression exception (Invalid group)

I have the following regular expression:

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

I am trying to find index integer in strings like this one:

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

That expression works fine with php, but it doesn't work in javascript, I get the following error:

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

What do I need to fix?

Thanks.

like image 440
Maksim Vi. Avatar asked Nov 16 '10 23:11

Maksim Vi.


3 Answers

(?<= ) is a positive lookbehind. JavaScript's flavor of RegEx does not support lookbehinds (but it does support lookaheads).

like image 102
mike Avatar answered Oct 23 '22 15:10

mike


JavaScript does not support look-behind assertions. Use this pattern instead:

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

Then extract the value captured in the group.

like image 45
cdhowie Avatar answered Oct 23 '22 15:10

cdhowie


var str = "some text{index:1}{id:2}{value:3}";
var index = str.match(/{index:(\d+)}/);
index = index && index[1]*1;
like image 5
Phrogz Avatar answered Oct 23 '22 17:10

Phrogz