Как сопоставить число в квадратных скобках с regex

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

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

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

javascript не поддерживает lookahead или lookbehind?

4 ответов


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

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


редактировать: с оператором группировки для целевой только номер:
var regex = /\[([0-9]+)\]/;

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

var matches = someStringVar.match(regex);
if (null != matches) {
  var num = matches[1];
}

Lookahead поддерживается, но не lookbehind. Ты можешь!--1-->близко, С небольшим обманом.


чтобы увеличить несколько чисел в виде давайте скажем:

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'

Если вы цитируете регулярное выражение, следите за двойным избеганием ваших обратных косых черт.