Как перестать показывать mailto при поиске всех URL в строке - PullRequest
1 голос
/ 23 сентября 2019

Я пытаюсь найти все URL-адреса из строки, для которой я использовал следующий код.

Urlify :function (text) {
        var urlRegex = /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g;
    }

Он работает нормально, но когда дело доходит до идентификатора электронной почты, он показывает mailto а также. Что я не хочу показывать.

<<strong>abc@test.com >

Может кто-нибудь помочь мнечтобы не показывать Mailto вместе с идентификатором электронной почты.

Спасибо.

1 Ответ

0 голосов
/ 23 сентября 2019

Обновленный код / ​​скрипт
Я думаю, это то, что вы ищете

, но сначала я бы удалил двоеточие из этого раздела регулярных выражений [-a-zA-Z0-9@%._\+~#=]

(Кроме первого двоеточия после (http(s)?:\/\/))

document.getElementById("doIt").addEventListener("click", function(){
  var urlRegex = /(http(?:s)?:\/\/)?(www\.)?([-a-zA-Z0-9@%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/=]*))/g;

  document.getElementById("result").innerHTML = document.getElementById("links").value.replace(urlRegex,
    function (url) {
      var extraText = /@/gi.test(url) ? "mailto:":"";
      return '<a href="' +extraText+ url + '" title="'+ url +'">' + url + '</a>';
    });
   });
<textarea id="links" rows="4" cols="50">
Billions of people abc@gmail.com around the world are still https://www.wikipedia.org/ without internet access. Loon is a network of balloons traveling on the edge of space, delivering connectivity to people in unserved and underserved communities around the world.
</textarea>
<br />
<button id="doIt"> replace </button>
<br />
<div id="result">
</div>

Обновление изменить все ссылки, кроме "Адреса электронной почты:"

    document.getElementById("doIt").addEventListener("click", function(){
      var urlRegex = /(http(?:s)?:\/\/)?(www\.)?([-a-zA-Z0-9@%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/=]*))/g;

      document.getElementById("result").innerHTML = document.getElementById("links").value.replace(urlRegex,
        function (url) {
          //Check if url is an email (this regex could be improved) 
          return (/.+@.+/gi.test(url))? url :'<a href="' + url + '" title="'+ url +'">' + url + '</a>';
        });
       });
    <textarea id="links" rows="4" cols="50">
      Billions of people abc@gmail.com around the world are still https://www.wikipedia.org/ without internet access. Loon is a network of balloons traveling on the edge of space, delivering connectivity to people in unserved and underserved communities around the world.
    </textarea>
    <br />
    <button id="doIt"> replace </button>
    <br />
    <div id="result">
    </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...