我想要一个RegExp,它将从字符串中删除所有特殊字符。我正在尝试这样的东西,但它在IE7中不工作,尽管它在Firefox中工作。

var specialChars = "!@#$^&%*()+=-[]\/{}|:<>?,.";

for (var i = 0; i < specialChars.length; i++) {
  stringToReplace = stringToReplace.replace(new RegExp("\\" + specialChars[i], "gi"), "");
}

RegExp的详细描述也会很有帮助。


当前回答

str.replace (/ \ s | 0-9_ | \ W |[#$%^&*()]/ g”,“这样)我做了某事。 但有些人做得更简单,比如str.replace(/\W_/g,"");

其他回答

注意,如果你仍然想排除一个集合,包括斜杠和特殊字符,你可以执行以下操作:

var outString = sourceString.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '');

需要特别注意的是,为了也包括“减号”字符,你需要像后面一组一样用反斜杠转义它。如果你不这样做,它也会选择0-9,这可能是不希望的。

你为什么不做这样的事情:

re = /^[a-z0-9 ]$/i;
var isValid = re.test(yourInput);

来检查您的输入是否包含任何特殊字符

纯Javascript regex不处理Unicode字母。

不要使用[^\w\s],这将删除带有口音的字母(如àèéìòù),更不用说西里尔字母或中文,来自这些语言的字母将被完整删除。

你真的不想把这些字母和所有的特殊字符一起去掉。你有两个机会:

在正则表达式中添加所有不想删除的特殊字符,例如:[^èéòàùì\w\s]。 看看xregexp.com。XRegExp通过\p{…}语法。

var str =“Їжак:::résd, $ % & adùf” var search = XRegExp< first >的pL] +) '); var res = XRegExp。代表(str,搜索,“全部”); 游戏机。log (res);/ /注册“Їжак:::resd, adf” 游戏机。log (str。代表(*);// / returns“rsd adf” 游戏机。log (str。代表(*);// returns“resd aduf” “https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.js”< script src = > / < script >

text.replace(/[`~!@#$%^*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '');

使用\W或[a-z0-9]正则表达式将不适用于非英语语言,如中文等,

最好使用正则表达式中的所有特殊字符,并将它们排除在给定的字符串中

str.replace(/[~`!@#$%^&*()+={}\[\];:\'\"<>.,\/\\\?-_]/g, '');