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

JavaScript正则表达式如何检测src属性中的双引号与全角双引号变体?

解决方案

这个问题很常见,尤其是处理用户输入或第三方内容时,经常会遇到不同类型的引号。咱们来调整正则表达式,让它能同时匹配直引号(")和弯引号(“/”)的情况:

1. 匹配规范配对的引号

如果你的场景中,弯引号是规范的左弯(“)加右弯(”)配对,同时兼容直引号的话,可以用这个分支式正则:

// 同时匹配直引号配对、弯引号配对的正则
const regexpSrc = /src=(["])(.*?)\1|src=(“)(.*?)”/;

// 测试直引号场景
const strWithStraightQuotes = 'src="http://link.com"';
let result = regexpSrc.exec(strWithStraightQuotes);
console.log(result[2]); // 输出: http://link.com

// 测试规范弯引号场景
const strWithCurlyQuotes = 'src=“http://link.com”';
result = regexpSrc.exec(strWithCurlyQuotes);
console.log(result[4]); // 输出: http://link.com

这里的逻辑是:

  • 第一部分src=(["])(.*?)\1匹配直引号包裹的内容,\1是反向引用,确保前后引号一致
  • 第二部分src=(“)(.*?)”专门匹配左弯加右弯的规范弯引号对

2. 兼容非规范的同型弯引号

如果你的场景中存在前后都是左弯引号(比如你例子里的src=“http://link.com“)这种非规范情况,可以用更灵活的正则,只要前后引号类型一致就匹配:

// 匹配任意同类型引号(直引号/左弯/右弯)的正则
const regexpSrcAnySameQuote = /src=([“”"])(.*?)\1/;

// 测试非规范弯引号场景
const strWithSameCurlyQuotes = 'src=“http://link.com“';
result = regexpSrcAnySameQuote.exec(strWithSameCurlyQuotes);
console.log(result[2]); // 输出: http://link.com

这个正则里的([“”"])会捕获任意一种引号,\1确保结尾和开头的引号完全相同,不管是直引号还是弯引号。

小提示

  • 这些弯引号是Unicode字符,确保你的代码文件和运行环境使用UTF-8编码,避免字符识别问题
  • 如果需要批量替换或提取多个匹配结果,可以用matchAll方法来遍历所有符合条件的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:08:59