Rumah > Soal Jawab > teks badan
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);
Ungkapan biasa ini agak mudah digunakan Satu-satunya masalah ialah jika terdapat ruang dalam rentetan, ia tidak boleh dibahagikan kepada dua URL.
Selesaikan
PHP中文网2017-05-19 10:15:12
Terdapat masalah dengan ekspresi biasa anda, sila ubah suai seperti berikut:
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);
漂亮男人2017-05-19 10:15:12
/(http:\/\/)?[A-Za-z0-9]*\.[A-Za-z0-9]+\.(:?com|cn|org|net|biz|...还有一大堆...)/g
Bercakap mengenainya, adalah sangat sukar untuk menilai dengan tepat nama domain yang tidak ditulis sepenuhnya Anda boleh menghitung semua akhiran nama domain, tetapi masih terdapat ralat. Cuba kaedah yang saya tulis ini adalah salah.