Как я могу исправить это регулярное выражение, чтобы разрешить конкретную строку? - PullRequest
0 голосов
/ 16 марта 2010

Это регулярное выражение исходит от Atwood и используется для фильтрации якорных тегов с чем-либо, кроме href и заголовка:

 <a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")?\s?>

Мне нужно разрешить дополнительный атрибут, который точно соответствует: target = "_ blank". Таким образом, следующий URL должен быть разрешен:

 <a href="http://www.google.com" target="_blank">

Я попытался изменить шаблон на:

 <a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")(\starget="_blank")?\s?>
 <a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")(\starget=\"_blank\")?\s?>

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

Ответы [ 2 ]

1 голос
/ 16 марта 2010
<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"(\stitle="[^"]+")(\starget="_blank")>
1 голос
/ 16 марта 2010
<a\shref="(\#\d+|(https?|ftp)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+)"\s(target=\"_blank\")>

Будет делать то, что вы просите.

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

Экономит много времени.

http://www.regular -expressions.info / regexbuddy.html (Regex Buddy)

http://www.regular -expressions.info также является хорошим ресурсом

...