JavaScript регулярное выражение - положительный взгляд - дает мне синтаксические ошибки - PullRequest
3 голосов
/ 31 мая 2010

Этот фрагмент регулярного выражения (?<=href\=")[^]+?(?=#_) должен соответствовать всему значению href, кроме значения hash и того, что следует за ним в URL-адресе href. Похоже, что он отлично работает в отладчиках / тестерах Regex, таких как http://gskinner.com/RegExr/ но в javascript он, кажется, производит синтаксическую ошибку. Если я удаляю < из (?<=), это работает, однако, это не тот позитивный взгляд, который я ищу.

Я, как обычно, снимаю волосы, благодаря Regex lol

Пожалуйста, помогите

Ответы [ 3 ]

7 голосов
/ 31 мая 2010

(?<=...) и (?<!...) - взгляды за спиной , а не взгляды вперед. Взгляды не поддерживаются механизмом регулярных выражений Javascript.

Ресурсы:

3 голосов
/ 31 мая 2010

Lookbehinds не поддерживают, как уже упоминалось.

Я не знаю, какую функцию вы используете для своего регулярного выражения, но если вы используете match(), просто добавьте группу захвата:

href="(.+?)(?=#)

Что дает вам, например ::

var str = '<a href="foo#bar"></a>';
var matches = str.match(/href="(.+?)(?=#)/);

// matches[0] =  href="foo
// matches[1] = foo           // <-- this is what you want

Дополнительная информация:

[^] означает, что соответствует всем символам, которые не в этом классе символов . Но в классе нет персонажей. Таким образом, он соответствует любому символу , что и делает точка ..

1 голос
/ 01 июня 2010

Причина, по которой ваше регулярное выражение работает в RegExr, заключается в том, что RegExr - это Flash-приложение, написанное на ActionScript, а не на JavaScript. Хотя AS объявляет себя совместимым со стандартом EcmaScript так же, как и JS, на самом деле он гораздо более мощный. Его механизм регулярных выражений работает от библиотеки PCRE, поэтому он имеет те же возможности, что и PHP.

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

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