使用RegExp删除所有特殊字符
我想要一个RegExp,它将删除字符串中的所有特殊字符。 我正在尝试这样的东西,但它在IE7中不起作用,尽管它在Firefox中起作用。
var specialChars = "!@#$^&%*()+=-[]/{}|:<>?,.";
for (var i = 0; i < specialChars.length; i++) {
stringToReplace = stringToReplace.replace(new RegExp("" + specialChars[i], "gi"), "");
}
RegExp的详细描述也会有帮助。
var desired = stringToReplace.replace(/[^ws]/gi, '')
正如评论中提到的那样,将其作为白名单更容易 - 替换不在安全列表中的字符。
插入符( ^
)字符是否定[...]
, gi
表示全局和不区分大小写(后者有点多余,但我想提及它),本例中的安全列表是数字,字符,下划线( w
)和空格( s
)。
请注意,如果您仍然想要排除集合,包括斜杠和特殊字符等,您可以执行以下操作:
var outString = sourceString.replace(/[`~!@#$%^&*()_|+-=?;:'",.<>{}[]/]/gi, '');
需要特别注意的是,为了还包括“减号”字符,您需要使用后一组的反斜杠进行转义。 如果你不这样做,它也会选择0-9,这可能是不希望的。
纯Javascript正则表达式不处理Unicode字母 。 不要使用[^ws]
,这将删除带有重音符号的字母(比如àèéìòù),更不用说西里尔语或中文,来自这些语言的信件将被完全删除。
你真的不想把这些字母和所有特殊字符一起删除。 你有两个机会:
例如:
[^èéòàùìws]
。 p{...}
语法添加对Unicode匹配的基本支持。 var str = "Їжак::: résd,$%& adùf"
var search = XRegExp('([^?<first>pL ]+)');
var res = XRegExp.replace(str, search, '',"all");
console.log(res); // returns "Їжак::: resd,adf"
console.log(str.replace(/[^ws]/gi, '') ); // returns " rsd adf"
console.log(str.replace(/[^wèéòàùìs]/gi, '') ); // returns " résd adùf"
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.js"></script>
链接地址: http://www.djcxy.com/p/95201.html
上一篇: Remove all special characters with RegExp
下一篇: 8 MySQL and Charset