【问题标题】:regex - shorter way for multiple replace [duplicate]正则表达式 - 多次替换的更短方法[重复]
【发布时间】:2020-05-24 16:53:31
【问题描述】:

var str = "~lorem ~lorem1 ~ipsum ~ipsum2 ~dolor ~dolor3";
str = str.replace(/~lorem/g, 'a');
str = str.replace(/~ipsum/g, 'b');
str = str.replace(/~dolor/g, 'c');
console.log(str);  // a a1 b b2 c c3
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

如何一次执行所有str.replace

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    您可以获取一个对象并根据键构建一个正则表达式。

    要替换为值,您需要一个函数,该函数接受找到的字符串并从对象中获取值。

    如果字符串包含特殊字符,您也需要将它们转义。

    var str = "~lorem ~lorem1 ~ipsum ~ipsum2 ~dolor ~dolor3",
        values = { '~lorem': 'a', '~ipsum': 'b', '~dolor': 'c' };
    
    str = str.replace(new RegExp(Object.keys(values).join('|'), 'g'), k => values[k]);
    
    console.log(str);  // a a1 b b2 c c3

    【讨论】:

      【解决方案2】:

      你可以像这样组合你的正则表达式:

      /(~lorem)|(~ipsum)|(~dolor)/g

      那么你需要使用function作为replace的第二个参数来设置'a'、'b'和'c'作为找到的文本的替换

      【讨论】:

        猜你喜欢
        • 2019-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多