【问题标题】:JavaScript replace regex with array element [duplicate]JavaScript用数组元素替换正则表达式[重复]
【发布时间】:2020-01-21 21:30:07
【问题描述】:

尝试将括号 [ ] 内的所有内容替换为数组元素。示例:

function replacingText(){
     var names = ["Cole", "Kyle", "Chase"];
     var sentance = 'This is [Cole].'
     var regex = "\[(.*?)\]/gm";
    console.log(sentance.replace(regex, names[1])); 
}

所以输出应该是“这是凯尔”。而不是“这是 [Cole]。”

【问题讨论】:

  • 使用正则表达式语法:var regex = /\[(.*?)\]/; — 使用字符串,它被解析为这样,反斜杠将被“吃掉”。
  • 在看到您的评论之前,我真的只是尝试过这个。我觉得很笨。后悔发帖。也许其他人会看到这一点,但它会帮助他们。

标签: javascript arrays regex


【解决方案1】:

唯一需要修复的是正则表达式字符串需要是

var regex = /\[(.*?)\]/gm;

最后的 /gm 只是意味着它不会在它找到的第一个处停止,“m”代表多行匹配。

【讨论】:

    【解决方案2】:

    javascript 字符串替换可以接受字符串和正则表达式作为第一个参数。 See the examples presented here.

    在您的情况下,您将第一个作为正则表达式的字符串传递:"\[(.*?)\]"

    相反,您应该匹配确切的字符串 sentence.replace("[Cole]", names[1]),或者,您可能想要的是使用正则表达式匹配任何名称 sentence.replace(/\[.+\]/g, names[1])(请注意,第一个参数不包含任何引号)

    /g(全局)用于匹配句子中的所有出现。否则只会替换第一个匹配项。

    【讨论】:

      【解决方案3】:

      你可以试试这个:

      function replacingText() {
        var names = ["Cole", "Kyle", "Chase"];
        var sentance = "This is [Cole] [ahmed]";
        var regex = /\[([0-9]|[aA-zZ])*\]/g;
        console.log(sentance.replace(regex, names[1]));
      }
      

      我刚刚试了一下,效果和预期一样

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-14
        • 2017-07-22
        • 1970-01-01
        • 1970-01-01
        • 2022-11-14
        • 2014-01-26
        • 1970-01-01
        • 2010-11-12
        相关资源
        最近更新 更多