Определить URL в тексте без гиперссылки и заменить нормальный URL гиперссылкой? - PullRequest
0 голосов
/ 02 мая 2019

Я потратил значительное количество времени на поиски решения или его попытки, но я не нашел его. Итак, мой случай использования:

У меня есть текст, который может иметь простой URL (с http / s или без него) или гиперссылку с URL.

Что должно сделать регулярное выражение

Он должен оставить URL гиперссылки как есть и преобразовать URL без гиперссылки в URL с гиперссылкой.

Пример текста

Я изучаю регулярные выражения на www.codeburst.com и пытаюсь найти регулярные выражения в <a href="https://regexr.com">Regexr</a>.

Ожидаемое решение

Я изучаю регулярное выражение из <a href="www.codeburst.com">www.codeburst.com</a> и пробую регулярное выражение в <a href="https://regexr.com">Regexr</a>.

Я пытался

это регулярное выражение, но оно не работает должным образом.

/((?!href).((https?:\/\/)||(www\.)|(mailto:)).+)/gi

Ответы [ 2 ]

1 голос
/ 02 мая 2019
  1. Возможно, вам нужен отрицательный взгляд (?<!href="), который был недавно добавлен в ECMAScript, см. этот ответ
  2. будьте осторожны с двойным ||, который делает токен позади этого бесполезного (голодного матча)
  3. также будьте осторожны с .+, который соответствует всему после (включая символ новой строки с параметром / s regex)

Я бы начал с

(?<!href=")(((https?:\/\/)|(www\.)|(mailto:))\S+)
0 голосов
/ 02 мая 2019
(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)

Выражение регулярного выражения выглядит следующим образом:

  1. (https?:\/\/)? проверяет http:\\ или https:\\ или no http
  2. (www\.)? проверяетwww. или no www.

Я проверял приведенное выше регулярное выражение со следующими тестовыми примерами:

  1. href = "https://www.regexr.com"
  2. href =" http://www.regexr.com"
  3. href = "mailto: demo@demo.com"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...