我需要一个函数来确定消息(字符串)中的URL出现并将它们包装在<a>
个元素中。
这是我的方法:
function wrapUrl(message){
var content = message.split(' ');
content.forEach(function(item){
// Check if this is an URL and if so, wrap it
});
}
这将用于聊天室,因此会有很多消息。每条消息都是POJO持有 3个键 - 值对。
考虑到性能,这是一个好方法还是我错过了一个更容易的变体?
答案 0 :(得分:2)
您可以使用:
function wrapUrl(message){
var regex = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/g;
var message2 = message.replace(regex, function(v) { return "<a>" + v + "</a>"});
return message2;
}
答案 1 :(得分:0)
检查this:
var regex = new RegExp("^(http[s]?:\\/\\/(www\\.)?|ftp:\\/\\/(www\\.)?|www\\.){1}([0-9A-Za-z-\\.@:%_\+~#=]+)+((\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\?(.)*)?");
if(regex.test("http://google.com")){
alert("Successful match");
}else{
alert("No match");
}