You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式提取iframe中src的URL(不含转义引号)

解决iframe src URL提取时的多余字符问题

先看你的场景:你有一段带转义引号的iframe字符串:

let iframe = "<iframe src=\"https://player.vimeo.com/video/111111\" width=\"500\" height=\"281\" frameborder=\"0\" allowfullscreen></iframe>";

之前用/\bhttps?:\/\/\S+/匹配时,结果带了多余的\",这是因为\S+会匹配到所有非空白字符,包括转义后的引号(实际字符串运行时是普通引号)。

正确的正则方案

直接精准匹配src属性里的内容,这样能避免捕获多余字符:

// 正则匹配src="..."里的URL
const srcRegex = /src="(https?:\/\/[^"]+)"/;
const matchResult = iframe.match(srcRegex);

// 提取捕获到的URL
const targetUrl = matchResult ? matchResult[1] : null;
console.log(targetUrl); // 输出: https://player.vimeo.com/video/111111

正则解释:

  • src=":精准定位到src属性的起始部分
  • (https?:\/\/[^"]+):捕获组,匹配以http/https开头,直到遇到第一个双引号为止的所有字符([^"]+表示匹配任意非引号字符)
  • 这样就能完美避开后面的引号,拿到纯净的URL

为什么之前的[^\"]没成功?

你可能是在正则里错误地转义了引号——在JavaScript正则字面量中,不需要转义双引号(除非你是用字符串包裹正则),直接写[^"]就可以匹配非引号字符,转义后反而会干扰匹配逻辑。

更稳妥的非正则方案(推荐)

如果场景允许,用DOM解析来提取URL会更可靠(毕竟正则处理HTML容易踩各种格式坑):

const tempContainer = document.createElement('div');
tempContainer.innerHTML = iframe;
const iframeElement = tempContainer.querySelector('iframe');
const cleanUrl = iframeElement.src;
console.log(cleanUrl); // 同样得到目标URL

内容的提问来源于stack exchange,提问作者flimflam57

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:03:45