检查 URL 是否包含 www 或 https:// 用于 RegEx

我有一个场景,我想检查一个字符串是否包含一个 url 并使其可点击。我已经使用正则表达式将其转换为 url。但它只适用于http。我也想为 wwww 制作它。在我拥有的正则表达式中,我可以添加 htttp 或删除 http 以在 url 中包含 www。我已经在 JSfiddle 中粘贴了代码

var convertTextToHTML = $("#systemNotificationMsg").text();

var conversation = convertTextToHTML.replace(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/, function(text, link) {

   return '<a href="http://'+ link +'"> ' + link + ' </a>';

});


12345678_0001
浏览 294回答 2
2回答

凤凰求蛊

看看这个,你必须进行全局匹配,你的正则表达式正在寻找返回的第一个匹配。您必须/gi在正则表达式中匹配多个。&nbsp; var convertTextToHTML = $("#systemNotificationMsg").text();var conversation = convertTextToHTML.replace(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/gi, function(text, link) {&nbsp; console.log("Link in text: "+ link);&nbsp; &nbsp;return '<a href="http://'+ link +'"> ' + link + ' </a>';});$("#systemNotificationMsg").html(conversation);<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div id="systemNotificationMsg">This message contains a link to www.google.com/hungerboxand another to www.google.com so this is the example</div>

白猪掌柜的

这可以通过稍微简单的正则表达式来实现。我在这里更新了 JSFiddle:https://jsfiddle.net/Lxnfq95b/1/正则表达式现在是:/(www|https?)([^\s]+)/g请注意,/g需要使其替换所有。(www|https?)将匹配 www.&nbsp;或 http(s) 链接。([^\s]+)&nbsp;将使正则表达式继续,直到遇到空格字符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript