【问题标题】:Use javascript to remove characters from a string based on a whitelist使用javascript根据白名单从字符串中删除字符
【发布时间】:2013-06-07 22:14:46
【问题描述】:

我似乎找不到这个问题的答案。我想要一个通用函数,允许我从字符串中删除所有字符,这些字符不存在于字符白名单中。

var validChars = "0123456789%-"
var stringToTest = "The result is -2,003% of the total"

我想要一个能产生结果的函数:-2,003%

感谢您的帮助。 广告

【问题讨论】:

  • ','不在白名单中...那你怎么能得到-2,...

标签: javascript regex whitelist


【解决方案1】:

你要找的是regular expressions:

"The result is -2,003% of the total".match(/[\d,%\-]+/)[0]; //=> -2,003%

【讨论】:

    【解决方案2】:

    “我想要一个通用函数”

    好的,像这样:

    function removeChars(validChars, inputString) {
        var regex = new RegExp('[^' + validChars + ']', 'g');
        return inputString.replace(regex, '');
    }
    
    var newString = removeChars('01234567890%-', "The result is -2,003% of the total");
    

    new RegExp() 部分创建(针对您的特定输入)这样的正则表达式:

    /[^01234567890%-]/g
    

    请注意,要按照您想要的方式工作,有效字符列表中的连字符需要位于列表的最后 - 您可以添加一些额外的代码来测试并移动它。此外,如果白名单包含对正则表达式具有特殊含义的其他字符(例如,]),您必须转义它们。我把这些细节留给读者练习……

    【讨论】:

    • 这正是我所需要的。谢谢!
    【解决方案3】:
    var regexp = new RegExp("[^" + validChars + "]", "g");
    console.log(stringToTest.replace(regexp, ""));
    

    注意validChars 包含用户输入;在这种情况下,它应该被正确地转义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-29
      • 2013-02-21
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      相关资源
      最近更新 更多