替换消息中n个特定字符串的出现次数

时间:2014-09-03 09:20:24

标签: javascript performance architecture

我需要一个函数来确定消息(字符串)中的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个键 - 值对。

考虑到性能,这是一个好方法还是我错过了一个更容易的变体?

2 个答案:

答案 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");
}