使用正则表达式使用字符串替换引用 JavaScript 中的嵌套组

Jac*_*cob 4 javascript regex replace regex-group

由于 jQuery 处理脚本标记的方式,我发现有必要使用正则表达式进行一些 HTML 操作(是的,我知道......这不是完成这项工作的理想工具)。不幸的是,我对捕获组在 JavaScript 中如何工作的理解似乎有缺陷,因为当我尝试这样做时:

var scriptTagFormat = /<script .*?(src="(.*?)")?.*?>(.*?)<\/script>/ig;

html = html.replace(
    scriptTagFormat, 
    '<span class="script-placeholder" style="display:none;" title="$2">$3</span>');
Run Code Online (Sandbox Code Playgroud)

脚本标记被替换为跨度,但生成的title属性为空。不应该匹配脚本标签的属性$2内容吗?src

Ala*_*ore 5

组的嵌套是无关紧要的;它们的编号严格由正则表达式中左括号的位置决定。在您的情况下,这意味着组#1 捕获整个src="value"序列,组#2 只捕获部分value