我似乎无法找到答案。我想要一个通用函数,它允许我删除字符串中不存在的所有字符。
var validChars = "0123456789%-"
var stringToTest = "The result is -2,003% of the total"
我想要一个可以产生结果的函数:-2,003%
感谢您的帮助。 AD
答案 0 :(得分:2)
您要找的是regular expressions:
"The result is -2,003% of the total".match(/[\d,%\-]+/)[0]; //=> -2,003%
答案 1 :(得分: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
请注意,要使其工作,您希望有效字符列表中的连字符的方式需要在列表中的最后一个 - 您可以添加一些额外的代码来测试并移动它。此外,如果白名单包含对正则表达式具有特殊含义的其他字符(例如,]
),则必须将它们转义。我把这些细节留作读者的练习......
答案 2 :(得分:1)
var regexp = new RegExp("[^" + validChars + "]", "g");
console.log(stringToTest.replace(regexp, ""));
小心包含用户输入的validChars
;在这种情况下,它应该被正确转义。