这应该会自动删除不在我的正则表达式上的字符,但是如果我放入字符串asdf sd %$##$
,它就不会删除任何内容,如果我放入此#sdf%#
,它只会删除第一个字符。我试图让它删除那些符号/特殊字符的任何和所有实例(任何不在我的正则表达式上),但它不能一直工作。谢谢你的帮助:
function ohno(){
var pattern = new RegExp("[^a-zA-Z0-9]+");
var str = "#sdf%#"; //"asdf sd %$##$" // Try both
str = str.replace(pattern,' ');
document.getElementById('msg').innerHTML = str;
}

答案 0 :(得分:4)
你需要g标志来删除多个匹配项:
var pattern = new RegExp("[^a-zA-Z0-9]+", "g");
请注意,使用正则表达式文字而不是RegExp构造函数会更有效和可读:
var pattern = /[^a-zA-Z0-9]+/g;
答案 1 :(得分:4)
您需要使用"g"
设置全局,该标志表示应针对字符串中的所有可能匹配测试正则表达式。
new RegExp("[^a-zA-Z0-9]+", "g")
var pattern = new RegExp("[^a-zA-Z0-9]+", "g");
var str = "#sdf%#"; //"asdf sd %$##$" // Try both
str = str.replace(pattern,' ');
alert(str)