我似乎找不到这个问题的答案。我想要一个通用函数,它允许我从字符串中删除字符白名单中不存在的所有字符。
var validChars = "0123456789%-"
var stringToTest = "The result is -2,003% of the total"
我想要一个会产生结果的函数:-2,003%
感谢您的帮助。 广告
最佳答案
"I would like a generic function"
好的,像这样:
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
请注意,要使其按照您希望的方式工作,有效字符列表中的连字符需要位于列表的最后 - 您可以添加一些额外的代码来对此进行测试并移动它。此外,如果白名单包含对正则表达式具有特殊含义的其他字符(例如,]
),您必须对它们进行转义。我把这些细节作为练习留给读者......
关于javascript - 使用javascript根据白名单从字符串中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17054682/