let str = "aaaa.com bbbb.com";
let re = /(http:\/\/)?([A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*)/g;
str = str.replace(re,function(a,b,c){return `<a href="http://${c}" target="_blank">${a}</a>`;});
console.log(str);
這個(gè)正則還比較好用,唯一的問(wèn)題就在于字符串里有空格不能劃分成兩個(gè) url。
求解
你的正則有問(wèn)題,修改如下:
var str = "aaaa.com bbbb.com http://www.yugasun.com";
var re = /([a-zA-z]+:\/\/)?(([^\s]+)\.([^\s]+))/g;
str = str.replace(re,function(a,b,c){return `<a href="http://${c}" target="_blank">${a}</a>`;});
console.log(str);
/(http:\/\/)?[A-Za-z0-9]*\.[A-Za-z0-9]+\.(:?com|cn|org|net|biz|...還有一大堆...)/g
話說(shuō)這種沒(méi)寫(xiě)全的域名還真沒(méi)法準(zhǔn)確判斷了,你可以把所有的域名后綴都枚舉出來(lái)判斷,但是還是有誤差。試試我寫(xiě)的這個(gè)辦法,這個(gè)正則寫(xiě)的不對(duì),你自己按我的寫(xiě)法寫(xiě)出來(lái)試試。