使用 JavaScript 根据白名单从字符串中删除字符

Use javascript to remove characters from a string based on a whitelist

本文关键字:字符串 字符 删除 名单 JavaScript 白名单 使用      更新时间:2023-09-26

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

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

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

感谢您的任何帮助。广告

"我想要一个通用函数">

好的,像这样:

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

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

你要找的是正则表达式:

"The result is -2,003% of the total".match(/['d,%'-]+/)[0]; //=> -2,003%
var regexp = new RegExp("[^" + validChars + "]", "g");
console.log(stringToTest.replace(regexp, ""));

当心包含用户输入的validChars;在这种情况下,应正确转义它。