使用正则表达式删除所有特殊字符

2022-08-30 00:05:17

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

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

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

对 RegExp 的详细说明也会有所帮助。


答案 1
var desired = stringToReplace.replace(/[^\w\s]/gi, '')

正如评论中提到的,作为白名单更容易做到这一点 - 替换不在安全列表中字符。

插入符号()字符是集合的否定,比如全局和不区分大小写(后者有点多余,但我想提一下),这个例子中的安全列表是数字,单词字符,下划线()和空格()。^[...]gi\w\s


答案 2

请注意,如果仍要排除某个集(包括斜杠和特殊字符等内容),则可以执行以下操作:

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

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