Сбой регулярного выражения - PullRequest
1 голос
/ 19 апреля 2010

Кто-нибудь поможет? Когда я запускаю это, я получаю "недопустимый квантификатор? <= Href =" </p>

var aHrefMatch = new RegExp("(?<=href\=")[^]+?(?=")"); 
var matchedLink = mystring.match(aHrefMatch);

Но я знаю, что регулярное выражение допустимо.

Есть идеи?

Ответы [ 4 ]

9 голосов
/ 19 апреля 2010

Javascript не поддерживает второстепенные утверждения. Он поддерживает только прогнозные. Ошибка возникает потому, что она предполагает? является квантификатором для 0 или 1, но нет элемента для количественной оценки в начале подшаблона (начинающегося с этой ( открывающей скобки)

Кроме того, в вашей строке, похоже, отсутствует несколько обратных косых черт, поскольку двойные кавычки там не экранируются. Это должно привести к синтаксической ошибке.

Возможно, этот код поможет вам сделать то, что вы пытаетесь достичь:

var match = mystring.match(/href=\"([^\"]*)\"/);
var matchedLink = match[1];
1 голос
/ 19 апреля 2010

Вы хотели избежать кавычки после знака = и после заглядывания вперед? =. Кроме того, если вы просто пытаетесь сопоставить href = "некоторый текст", то вам действительно не нужно оглядываться назад и смотреть вперед. Следующее должно делать просто отлично

href=\"[^"]+\"

Если вы пытаетесь сопоставить что-то еще, пожалуйста, уточните. Спасибо

1 голос
/ 19 апреля 2010

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

var aHrefMatch = new RegExp("(?<=href\=\")[^]+?(?=\")");

... или вы можете просто использовать одинарные кавычки для указания строки:

var aHrefMatch = new RegExp('(?<=href\=")[^]+?(?=")');
0 голосов
/ 19 апреля 2010

Не знаю, что ты хочешь делать. Но если вы хотите получить ссылку.

var aHrefMatch = new RegExp(/(href\=\")([\w\-\/]+)?(\")/); 
var matchedLink = mystring.match(aHrefMatch)[2];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...