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);
這個正規還比較好用,唯一的問題就在於字串裡有空格不能分割成兩個 url。
求解
你的正規有問題,修改如下:
話說這種沒寫全的網域還真沒辦法準確判斷了,你可以把所有的網域後綴都枚舉出來判斷,但還是有誤差。試試我寫的這個辦法,這個正規寫的不對,你自己照我的寫法寫出來試試。