regex 正则表达式javascript -捕获源URL,只有当它是一个图像?

zte4gxcn  于 2022-11-18  发布在  Java
关注(0)|答案(4)|浏览(107)

我试着提取不带引号的源URL/路径,只在它是一个图像的情况下:
1.//应该捕获=〉/路径/图像. png
1.//应该捕获=〉/路径/图像. bmp
1.//应该捕获=〉/路径/图像. jpg

  1. src=”https://www.site1.com“//不应捕获
    到目前为止,我有/src="(.*)"/g,但这显然抓住了两者,我一直在看,看看后面和展望,但只是不能把它放在一起。
vkc1a9a2

vkc1a9a21#

您可以使用捕获组,并且应该防止使用取反的字符类跨越"
如果要匹配href或src

\b(?:href|src)="([^\s"]*\.(?:png|jpg|bmp))"

说明

  • \b防止部分字匹配的字边界
  • (?:href|src)="href=src=匹配
  • (捕获组1
  • [^\s"]*匹配除空格字符或"以外的可选字符
  • \.(?:png|jpg|bmp)匹配.png.jpg.bmp中的一个
  • )关闭组1
  • "逐字匹配

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]);
  }
})
yzxexxkh

yzxexxkh2#

尝试/src="(.*(?:jpg|bmp|png))"/g
您需要在扩展名列表中输入您认为有效的图像

uhry853o

uhry853o3#

如果你想让它更容易被愚弄,你可以使用look behinds和look aheads。扩展扩展列表png|bmp|jpg来测试更多的扩展。

/(?<=src=").*(png|bmp|jpg)(?=")/g

regex101

kwvwclae

kwvwclae4#

试试这个src="(.*image.*)"

相关问题