Как мне сопоставить число в квадратных скобках с регулярным выражением - PullRequest
9 голосов
/ 10 августа 2010

Я написал регулярное выражение, которое, как я ожидаю, должно работать, но это не так.

  var regex = new RegExp('(?<=\[)[0-9]+(?=\])')

Javascript выдает мне ошибку Invalid regular expression :(/(?<=[)[0-9]+(?=])/): Invalid group

Javascript не поддерживает прогнозирование или просмотр назад?

Ответы [ 4 ]

19 голосов
/ 10 августа 2010

Это должно работать:

var regex = /\[[0-9]+\]/;

edit : с оператором группировки для целевого числа:

var regex = /\[([0-9]+)\]/;

С этим выражением вы можете сделать что-то вроде этого:

var matches = someStringVar.match(regex);
if (null != matches) {
  var num = matches[1];
}
2 голосов
/ 10 августа 2010

Lookahead поддерживается, но не поддерживается.Вы можете приблизиться , с небольшой хитростью.

1 голос
/ 16 мая 2015

Чтобы увеличить несколько чисел в форме, скажем:

var str = '/a/b/[123]/c/[4567]/[2]/69';

Попробуйте:

str.replace(/\[(\d+)\]/g, function(m, p1){
 return '['+(p1*1+1)+']' }
)

//Gives you => '/a/b/[124]/c/[4568]/[3]/69'
0 голосов
/ 10 августа 2010

Если вы цитируете RegExp, остерегайтесь двойной экранирования от обратной косой черты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...