我有一个场景,我想检查一个字符串是否包含一个url,并将其设置为可点击。我使用正则表达式将其转换为url。但它只适用于http。我也想为wwww制作它。在我拥有的regex中,我可以添加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>';
});发布于 2019-10-24 18:29:43
看看这个,你必须进行全局匹配,你的正则表达式正在寻找第一个返回的匹配。你必须在正则表达式中匹配多个/gi。
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) {
console.log("Link in text: "+ link);
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/hungerbox
and another to www.google.com so this is the example
</div>
发布于 2019-10-24 18:13:13
这可以通过稍微简单一点的正则表达式来实现。
我已经在这里更新了JSFiddle:
https://jsfiddle.net/Lxnfq95b/1/
正则表达式现在是:
/(www|https?)([^\s]+)/g请注意,需要/g才能将其全部替换。
(www|https?)将匹配www.或http(s)链接。
([^\s]+)将使正则表达式继续执行,直到遇到空格字符。
https://stackoverflow.com/questions/58538941
复制相似问题