我正在嘗試提取不帶引號的 src URL/路徑,僅在它是影像的情況下:
- src="/path/image.png" // 應該捕獲 => /path/image.png
- src="/path/image.bmp" // 應該捕獲 => /path/image.bmp
- src="/path/image.jpg" // 應該捕獲 => /path/image.jpg
- src="https://www.site1.com" // 不應捕獲
到目前為止我有/src="(.*)"/g,但這顯然抓住了兩者,我一直在回顧和展望未來,但就是不能把它們放在一起。
uj5u.com熱心網友回復:
您可以使用捕獲組,并且您應該防止"使用否定的字符類。
如果你想匹配 href 或 src
\b(?:href|src)="([^\s"]*\.(?:png|jpg|bmp))"
解釋
\b防止部分單詞匹配的單詞邊界(?:href|src)="匹配href=或src=(捕獲組 1[^\s"]*匹配除空白字符以外的可選字符或"\.(?:png|jpg|bmp)匹配其中之一.png.jpg.bmp
)關閉第 1 組"逐字匹配
正則運算式演示
const regex = /\b(?:href|src)="([^\s"]*\.(?:png|jpg|bmp))"/;
[
'src="/path/image.png" test "',
'src="/path/image.bmp"',
'src="/path/image.jpg"',
'src="https://www.site1.com"',
'href="image.png"'
].forEach(s => {
const m = s.match(regex);
if (m) {
console.log(m[1]);
}
})
uj5u.com熱心網友回復:
嘗試/src="(.*[jpg|bmp|png])"/g
您需要在您認為有效影像的擴展名串列中輸入
uj5u.com熱心網友回復:
如果你想讓它更簡單一些,你可以使用 look behinds 和 look aheads。展開擴展串列png|bmp|jpg以測驗更多擴展。
/(?<=src=").*(png|bmp|jpg)(?=")/g
正則運算式101
uj5u.com熱心網友回復:
嘗試這個src="(.*image.*)"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534035.html
上一篇:回傳后跟空格的特定字符或單詞-RegexPython
下一篇:如何讓正則運算式更準確地回傳?
