我试着提取不带引号的源URL/路径,只在它是一个图像的情况下:1.//应该捕获=〉/路径/图像. png1.//应该捕获=〉/路径/图像. bmp1.//应该捕获=〉/路径/图像. jpg
/src="(.*)"/g
vkc1a9a21#
您可以使用捕获组,并且应该防止使用取反的字符类跨越"。如果要匹配href或src
"
\b(?:href|src)="([^\s"]*\.(?:png|jpg|bmp))"
说明
\b
(?:href|src)="
href=
src=
(
[^\s"]*
\.(?:png|jpg|bmp)
.png
.jpg
.bmp
)
Regex demo
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]); } })
yzxexxkh2#
尝试/src="(.*(?:jpg|bmp|png))"/g您需要在扩展名列表中输入您认为有效的图像
/src="(.*(?:jpg|bmp|png))"/g
uhry853o3#
如果你想让它更容易被愚弄,你可以使用look behinds和look aheads。扩展扩展列表png|bmp|jpg来测试更多的扩展。
png|bmp|jpg
/(?<=src=").*(png|bmp|jpg)(?=")/g
regex101
kwvwclae4#
试试这个src="(.*image.*)"
src="(.*image.*)"
4条答案
按热度按时间vkc1a9a21#
您可以使用捕获组,并且应该防止使用取反的字符类跨越
"
。如果要匹配href或src
说明
\b
防止部分字匹配的字边界(?:href|src)="
与href=
或src=
匹配(
捕获组1[^\s"]*
匹配除空格字符或"
以外的可选字符\.(?:png|jpg|bmp)
匹配.png
.jpg
.bmp
中的一个)
关闭组1"
逐字匹配Regex demo
yzxexxkh2#
尝试
/src="(.*(?:jpg|bmp|png))"/g
您需要在扩展名列表中输入您认为有效的图像
uhry853o3#
如果你想让它更容易被愚弄,你可以使用look behinds和look aheads。扩展扩展列表
png|bmp|jpg
来测试更多的扩展。regex101
kwvwclae4#
试试这个
src="(.*image.*)"