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

Firefox中Javascript正则flag U失效,如何提取div的id后缀数字?

问题原因

U修饰符报错原因

U修饰符是PCRE正则体系下的「非贪婪模式全局修饰符」,JavaScript原生正则语法不支持该标识,因此Firefox浏览器会直接抛出语法错误。

移除U后匹配范围过大的原因

你编写的捕获规则[^()]*含义为「匹配所有不包含左右括号的字符」,在原始无括号的HTML字符串中,该规则会从第一个img-开始一直向后匹配,直到命中整个字符串最后一处" class才会停止,因此会出现整段选中的问题。你手动添加括号后,[^()]*遇到括号就会终止匹配,刚好符合你之前加U修饰符的非贪婪效果,因此可以正常运行。

解决方案

不需要额外修改原HTML字符串,直接使用更精准的正则规则即可,你要提取的是img-后到id属性结束双引号之间的数字,直接针对数字匹配即可:
正确正则:/img-(\d+)"/g

JS调用示例:

// 原始HTML字符串
const rawHtml = `<div id="img-1" class="draggable">AP2<br><img src="URL"></div><div id="img-3" class="draggable">AP6<br><img src="URL"></div><div id="img-6" class="draggable">AP5<br><img src="URL"></div>`;
const idReg = /img-(\d+)"/g;
const result = [];
let matchItem;
// 循环匹配所有符合规则的内容
while ((matchItem = idReg.exec(rawHtml)) !== null) {
  // 捕获组第一个内容就是目标数字
  result.push(matchItem[1]);
}
console.log(result); // 输出 ["1", "3", "6"]

如果id中img-后可能存在非数字内容,也可以使用匹配到最近双引号的规则:/img-([^"]+)"/g,调用逻辑和上述代码完全一致,也能得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:15:00