-1
こんにちはプロジェクトでは、URLを検索して&のメールを検索し、リンクで置き換えるための次のコードがあります。この作品は素晴らしいが、それは最後のスラッシュを持ってurlと末尾にスラッシュを一致させよ
のようなURLと一致していません。
API.prototype.replaceURLS = function(str) {
var patterns = [
"\\b((?:https?|ftp)://[^\\s\"'<>]?/+)\\b",
"\\b(www\\.[^\\s\"'<>]?/+)\\b",
"\\b(\\w[\\w.+-]*@[\\w.-]+\\.[a-z]{2,6})\\b"
];
var reg = new RegExp(patterns.join('|'), "gi");
return str.replace(reg, function(match, url, www, mail) {
if (url) {
return "<a target='_blank' href=\"" + url + "\">" + url + "</a>";
}
if (www) {
return "<a target='_blank' href=\"http://" + www + "\">" + www + "</a>";
}
if (mail) {
return "<a href=\"mailto:" + mail + "\">" + mail + "</a>";
}
// just in case...
return match;
});
};
正規表現:
\b((?:https?|ftp):\/\/[^\s"'<>]+)\b|\b(www\.[^\s"'<>]+)\b|\b(\w[\w.+-]*@[\w.-]+\.[a-z]{2,6})\b
正常に動作しますが、それさえ 'HTTPSを処理していないよう://が正しくwww.example.com' ? –
https://regex101.com/ – Syd
で試してみることができます - https://regex101.com/r/RrMTXz/1と一致しません。それはあなたの正規表現に誤りがあるため(部分的に)です。あなたの 'url'と' www'正規表現はスペース、引用符、 '<' or '> 'ではない1文字にマッチする' [^ \\ s \ "' <>]?/ '/'。私はあなたが望んでいないと思っています。 – ClasG