RegEx для поиска шаблона href = "что-то" - PullRequest
0 голосов
/ 25 февраля 2019

Я знаю, что RegEx не следует использовать для анализа HTML, но я не могу использовать любое другое решение, поэтому я застрял с этим, я получил это для URI.js:

/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’&quote]))/ig

Однакоэто работает не очень хорошо, поэтому я хотел добавить префикс, который будет искать только строки, начинающиеся с href =

Завершено примерно так (работает в тестере RegEx):

href\=\"\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’&quote]))

Но при компиляции выдает ошибку "недопустимый символ".Не уверен, что именно "или =" является причиной этого.

Код JS:

matches_temp = result_content.match(href\=\"\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’&quote])));

result_content взят из БД.

1 Ответ

0 голосов
/ 25 февраля 2019

Вам нужны косые черты, которые говорят, что это регулярное выражение, вроде как в кавычках говорится, что это значение является строкой.Поэтому .match (regex) должно быть .match (/ regex /).Взгляните:

var result_content = '<a href="http://www.google.com">blah</a>';


var matches_temp = result_content.match(/href\=\"\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’&quote]))/);
console.log(matches_temp[1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...