2015-06-12 2 views
0

Я пытаюсь сделать регулярное выражение в JavaScript, чтобы поймать все ссылки в тексте, кроме тех, которые находятся внутри тегов привязки (оба атрибута href или внутренний текст).Regexp, чтобы поймать ссылки не в теге привязки

Например, следующее должно соответствовать:

http://google.com 

Однако ничто не должно совпадать в следующем:

<a href="http://google.com">Link</a> 
<a href="http://google.com">http://google.com</a> 

Я нашел this post on StackOverflow, но это требует просмотра назад, который не поддерживается по JavaScript.

ответ

0

ответ OhAuth в (ht|f)tps?:\/\/[^"]*?(?=<|\s|$) использует тот факт, что фактическая ссылка на якорь тега следуют ("), что означает ни с просмотром назад, ни его обходные пути neccesary

EDIT:.

Используя только lookaheads, мы можем добиться чего-то вроде этого: (ht|f)tps?:\/\/[^\"<]*?(?=\s|$|<\/[^a]>), что приводит к следующему: https://regex101.com/r/eR3mT4/1, в котором отсутствует символ привязки, содержащий ссылки и дополнительные символы. Такая ситуация кажется трудной для r egex и lookbehind не помогут.

+0

не в '' 'http://website.com' '' Я не хочу соответствовать ничего ... Я хочу, чтобы соответствовать только в простой ссылки в тексте ... если есть какой-либо якорный тег, я не хочу соответствовать чему-либо внутри href или внутри тега привязки – Riccardo

+0

Написал редактирование для большинства случаев, используя lookaheads. Ссылка внутри заголовка привязки с дополнительными символами является трудной задачей для lookbehinds, lookaheads и regex вообще, поскольку нет никакого контроля над тем, что может или не может быть до или после возможной ссылки в заголовке привязки. –

Смежные вопросы