Как извлечь текст с помощью регулярных выражений? - PullRequest
2 голосов
/ 02 марта 2011

В чем проблема с моим кодом

var str = "[356] Hello World";
var patt = new RegExp("(?!\[)\d+(?<!\])","");
var result = patt.exec(str);

Результат должен быть = 356

Ответы [ 3 ]

2 голосов
/ 02 марта 2011

Проблема в том, что вы не можете делать негативные взгляды в Javascript.


Что-то вроде этого должно работать:

var str = '[356] Hello World',
    patt = /\[(\d+)\]/,
    result = patt.exec(str)[1];

Это создает подходящую группу и выбирает совпадениес [1].

1 голос
/ 02 марта 2011

В дополнение к тому, что указали другие, у вас неправильный синтаксис для обходных путей.

  • (?!regex) - это негативный взгляд, но вы используете его как позитивный взгляд назад.
  • (?<!regex) - это негативный взгляд, но вы используете его какположительный взгляд.

Так как взгляды не поддерживаются в JS, ответы Thai и loneomeday являются подходящими.На языке, который их поддерживал, вы бы хотели:

/(?<=\[)\d+(?=\])/
1 голос
/ 02 марта 2011

Lookbehinds не поддерживаются в JavaScript .

Вместо этого вы можете попробовать использовать подшаблоны.

var str = "[356] Hello World";
var match = str.match(/\[(\d+)\]/);
var result = match ? match[1] : null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...