我用下面拿起所有HTTPS或從一個大的字符串中的FTP正則表達式 -
/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
我想擴展功能,以免拿起任何URL的有符合某些網址前src="
標籤
比賽: https://xxx.yyy.com
不匹配: src="https://xxx.yyy.com
我已經嘗試過試圖匹配src="
但沒有成功的負面看法。
我用下面拿起所有HTTPS或從一個大的字符串中的FTP正則表達式 -
/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
我想擴展功能,以免拿起任何URL的有符合某些網址前src="
標籤
比賽: https://xxx.yyy.com
不匹配: src="https://xxx.yyy.com
我已經嘗試過試圖匹配src="
但沒有成功的負面看法。
JavaScript正則表達式不支持 lookbehinds。你能匹配這樣的字符串
的常用方法是:
[^"]https:\/\/[a-z.]+
雖然你應該寫的更詳細的正則表達式的域,然後直接跳過第一個字符來獲得URL。你可以在這裏看到regex demo。
JavaScript中不支持Lookbehinds。然而,你可以通過一個可選的組明確匹配src="
解決這個問題,然後篩選出與該組匹配的所有比賽:
var input = `Match: https://match.xxx.yyy.com
No Match: src="https://fail.xxx.yyy.com`;
var regex = /(src=")?\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/gim;
var urls = [];
// collect only matches without `src="` prefix
input.replace(regex, function(match, src) { if (!src) {urls.push(match)} });
console.log(urls);
你爲什麼不告訴我們你在使用負回顧後嘗試? – Amy
問題是Javascript不支持lookbehindes。 –