首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >捕获src,只有当它是一个图像?

捕获src,只有当它是一个图像?
EN

Stack Overflow用户
提问于 2022-11-15 15:36:54
回答 4查看 92关注 0票数 1

我试图在没有引号的情况下提取src URL/path,只有在这种情况下它是一个图像:

  1. src=" /path/image.png“//应该捕获=> /path/Image.png
  2. src=" /path/image.bmp“//应该捕获=> /path/Image.bmp
  3. src=" /path/image.jpg“//应该捕获=> /path/Image.jpg
  4. src="https://www.site1.com“//不应捕获

到目前为止,我有/src="(.*)"/g,但很明显,这两者都有,我一直在回头看,展望未来,但只是不能把它放在一起。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-11-15 17:06:03

您可以使用捕获组,并且应该防止使用否定的字符类跨越"

如果您想要匹配href或src

代码语言:javascript
运行
复制
\b(?:href|src)="([^\s"]*\.(?:png|jpg|bmp))"

解释

  • \b阻止部分单词匹配的单词边界
  • (?:href|src)="匹配href=src=
  • ( Capture group 1
    • [^\s"]*匹配除空格char或"以外的可选字符
    • \.(?:png|jpg|bmp)匹配.png .jpg .bmp的一个

  • )闭组1
  • "匹配

Regex演示

代码语言:javascript
运行
复制
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]);
  }
})

票数 4
EN

Stack Overflow用户

发布于 2022-11-15 15:42:36

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

您需要输入您认为有效的图片的扩展列表

票数 2
EN

Stack Overflow用户

发布于 2022-11-15 15:52:41

如果你希望它是一个更愚蠢的证据,你可以使用看后面和头。展开扩展列表png|bmp|jpg以测试更多扩展。

代码语言:javascript
运行
复制
/(?<=src=").*(png|bmp|jpg)(?=")/g

regex101

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74448347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档