【问题标题】:String.replace regex is not replacing `*` in stringString.replace 正则表达式没有替换字符串中的 `*`
【发布时间】:2017-07-29 23:02:12
【问题描述】:

我有一个字符串进来,我在上面运行string.replace,它没有从字符串中删除*字符,但它正在删除|字符。

var s = "|*55.6";
s = s.replace(/[^0-9.]/, "");
console.log(s);

【问题讨论】:

标签: javascript regex


【解决方案1】:

您缺少+ 来查找一个或多个匹配项:

var s = "|*55.6";
s = s.replace(/[^0-9.]+/, "");
console.log(s);

另外如果你有兴趣取出号码,可以使用.match()方法:

var s = "|*55.6";
s = s.match(/[(0-9.)]+/g)[0];
console.log(s);

【讨论】:

    【解决方案2】:

    替换字符串时需要使用global (g) flag / modifierplus (+) quantifier

    var s = "|*55.6";
    s = s.replace(/[^0-9.]/g, "");
    console.log(s);

    var s = "|*55.6";
    s = s.replace(/[^0-9.]+/, "");
    console.log(s);

    【讨论】:

      【解决方案3】:

      如果要替换多个匹配项,请使用 global regular expression (/.../g):

      s = s.replace(/[^0-9.]+/g, "") //=> "55.6"
      

      编辑: 使用+ 遵循您的模式(匹配多个模式连续)将产生更少的匹配,从而使用@987654327 进行替换@run 比单独使用 g 标志更有效。我会同时使用它们。感谢Jai 在我之前在his answer 中使用此技术。


      演示片段

      var s = "|*55.6"
      s = s.replace(/[^0-9.]+/g, "")
      console.log(s) //=> "55.6"

      【讨论】:

        【解决方案4】:

        您没有为您的正则表达式使用global flag,这就是替换第一个匹配项的原因,而不是操作结束。

        var s = "|*55.6";
        s = s.replace(/[^\d.]/g, "");
        console.log(s);

        如果[^\d.] 单独出现,单独使用+ 量词将无济于事,但与g 标志一起使用会更好。例如;

        var s = "|*55.6a"
        s = s.replace(/[^0-9.]+/, "")
        console.log(s) //=> "55.6a not OK

        【讨论】:

          【解决方案5】:

          一些答案​​提到了Quantifiers +,但它仍然只会替换第一个匹配项:

          console.log("|*45.6abc".replace(/[^0-9.]+/, ""))

          如果您需要删除所有非数字字符(. 除外),modifier/flag g 仍然是必需的

          console.log("|*45.6,34d".replace(/[^0-9.]+/g, ""));

          【讨论】:

            【解决方案6】:

            这是因为替换只执行了一次。使用g 选项替换每个匹配项。

            s = s.replace(/[^0-9.]/g, "");
            

            【讨论】:

              猜你喜欢
              • 2014-01-24
              • 2018-07-13
              • 2017-02-04
              • 1970-01-01
              • 1970-01-01
              • 2015-11-30
              • 2012-04-26
              相关资源
              最近更新 更多