如果域匹配,则用链接替换普通URL

时间:2014-12-16 15:45:09

标签: javascript regex string replace hyperlink

您好我想替换这样的字符串:

"Hey this is a link to somesite.co bye bye";

"Hey this is a link to <a href="somesite.co">somesite.co</a> bye bye";

但是,只有找到somesite.co而不是如果它是someotherdunno.co域

我尝试的是将所有字符串拆分并检查每个单词,这样如果字段在单词中,则将其替换为

<a href="$domainFound">$domainFound</a> 

但是我不喜欢这个解决方案我相信有更快/更好的方法来实现这个目标,你有什么线索吗?

谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式替换然后追加。

var str = "Hey this is a link to somesite.co bye bye";
str = str.replace(/(somesite\.co)/g, "<a href="$1">$1</a>");
var a = document.createElement('a');
a.outerHTML = str;
document.body.appendChild(a);

答案 1 :(得分:1)

您可以尝试查找已知域名,然后检查它是否是有效网址。

var i, len, re, domain, secure,
  string = 'Your string that contains my-domain.com !'
  domains = [ 'com', 'co' ];

for ( i = 0, len = domains.length; i < len; i++ ) {
    re = new RegExp( '(?:\\s|^)(\\S*?\\.'+ domains[ i ] +')(?:\\s|$)', 'g' );

    // find all possible domains in the string
    while( domain = re.exec( string ) ) {
        domain = domain[ 1 ];
        if ( checkDomain( domain ) ) {
            string = string.replace( domain, '<a href="'+ domain +'">'+ domain +'</a>' );
        }
    }
}

console.log( string );  
//Your string that contains <a href="my-domain.com">my-domain.com</a> !

function checkDomain ( domain ) {
    // returns true if the domain exists
    return true;
}

Try it on jsFiddle