Regex для преобразования URL в гиперссылки при вводе пользователем - PullRequest
1 голос
/ 04 февраля 2020

У меня есть рабочее регулярное выражение, которое принимает пользовательский ввод, такой как «Пожалуйста, перейдите по этой ссылке: http://www.google.com или по этой ссылке https://www.google.com». и превращает URL-адреса в гиперссылки. Период уведомления в конце пользовательского ввода. Мне нужно знать, как игнорировать точку в конце предложения, чтобы последний URL заканчивался как https://www.test2.com, а не https://www.test2.com.

vm.transformText = (text) ->
  return text.replace(/(https:\/\/|http:\/\/)([\w\.\?\+\=\/]+)/g, "<a target=\"_blank\" href=\"$1$2\">$1$2</a>")

1 Ответ

2 голосов
/ 04 февраля 2020

Прежде всего, ваш шаблон может быть подвергнут рефакторингу, чтобы вы могли легче изменить его в соответствии с вашими потребностями.

Чередование https:\/\/|http:\/\/ может быть уменьшено до короткого https?:\/\/, где s сделан необязательным (? соответствует шаблону 1 или 0 раз).

Часть [\w\.\?\+\=\/]+ переэкранирована. Вам нужно только экранировать / (на самом деле, даже этот символ внутри класса символов может быть оставлен без экранирования).

Если вы просто хотите прекратить соответствие до ., используйте

/(https?:\/\/)([\w.?+=\/]*[\w?+=\/])/g
               ^^^^^^^^^^^^^^^^^^^^

См. Демонстрационную версию regex

Здесь [\w.?+=\/]+ превращается в [\w.?+=\/]*[\w?+=\/]: 0 или более слов, точка, ?, +, = или / символов с последующим словом ?, +, = или / char.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...