您好我想替换这样的字符串:
"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>
但是我不喜欢这个解决方案我相信有更快/更好的方法来实现这个目标,你有什么线索吗?
谢谢
答案 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;
}