javascript - 将 2 个替换合并为 1

标签 javascript regex

有没有一种方法可以像我的示例中所示那样执行一步替换?

我知道,组用于类似的任务,但我不确定它们是否真的可以在这里工作。

var css = `
    .foo { color: green; } // Invalid JS-style comment
    .bar { color: yellow; } // Invalid JS-style comment
    // Standalone invalid comment
    .baz { color: red; } // Invalid JS-style comment
`;

// Is there a way to combine these two replacements in 1 step?
css = css.replace(/;/g, ' !important;');
css = css.replace(/\/\/.*/g, '');

alert(css);

最佳答案

假设在 ; 之后出现的只是右括号和注释,只需将所有内容替换为您需要的内容即可:

css.replace(/;.*/g, ' !important; }')

当然,如果您在一个 block 中有多个语句,它就不会工作。

关于您的编辑:然后您可以先匹配注释和可选的分号,但随后您需要使用替换功能,如下所示:

css.replace(/(;[^\/]*)?\/\/.*/g, (m, g) => g ? ' !important; }' : '');

它只匹配//或分号和注释,但只捕获后者。然后,它会检查是否捕获到某些内容,并仅在该情况下进行替换。

关于javascript - 将 2 个替换合并为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49961493/

相关文章:

javascript - 多级转发引用 [Typescript/React]

javascript - 删除服务器端验证并进行完整的客户端验证?

javascript - innerHTML 生成的 div 上的点击事件

sql - 在 Postgresql 中使用正则表达式从现有字符串创建新字符串

javascript - 在替换中使用匹配

javascript - Reactjs - 如何向组件提供属性

javascript - 如何将第二个数组中的数据添加到第一个数组中以在谷歌可视化 API 中显示图表

R - 将字母数字字符观察值与每个字母因子的列分开,每个观察值具有数字值

ruby - 在字符串 Ruby 中每隔 # 个字符添加\n

r - 如何从电子邮件地址中提取 "domain"