javascript正则expression式删除所有特殊字符
我想要一个RegExp,它将删除string中的所有特殊字符。 我正在尝试这样的东西,但它不工作在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(/[^\w\s]/gi, '') 
正如评论中提到的那样,将其作为白名单更容易 – replace不在安全列表中的字符。
  ( ^ )字符是否定集合, gi表示全局和不区分大小写(后者有点多余,但我想提及它),本例中的安全列表是数字,字符,下划线( \w )和空格( \s )。 
请注意,如果您仍想要排除集合,包括斜杠和特殊字符等,则可以执行以下操作:
 var outString = sourceString.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); 
需要特别注意的是,为了还包括“减号”字符,你需要像后一组一样用一个反斜杠来转义它。 如果你不这样做,它也会select0-9这可能是不受欢迎的。
  纯Javascript正则expression式不处理Unicode字母 。 不要使用[^\w\s] ,这会删除带有口音的字母(比如àèéìòù),不会提到西里尔文或中文,这样的语言字母将会被删除。 
你真的不想把这些字母和所有特殊字符一起删除。 你有两个机会:
-  在你的正则expression式中join所有你不想删除的特殊字符, 
 例如:[^èéòàùì\w\s]。
-  看看xregexp.com 。  XRegExp通过\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(/[^\w\s]/gi, '') ); // returns " rsd adf" console.log(str.replace(/[^\wèéòàùì\s]/gi, '') ); // returns " résd adùf" 
 <script src="ajax/libs/xregexp/3.1.1/xregexp-all.js"></script> 
第一个解决scheme不适用于任何UTF-8 alphabenben。 (它会剪切文字,如Їжак)。 我设法创build了不使用RegExp的function,并在JavaScript引擎中使用了良好的UTF-8支持。 这个想法很简单,如果符号大写和小写都是特殊字符。 唯一的例外是空白。
 function removeSpecials(str) { var lower = str.toLowerCase(); var upper = str.toUpperCase(); var res = ""; for(var i=0; i<lower.length; ++i) { if(lower[i] != upper[i] || lower[i].trim() === '') res += str[i]; } return res; } 
你为什么不做这样的事情:
 re = /^[a-z0-9 ]$/i; var isValid = re.test(yourInput); 
检查你的input是否包含任何特殊字符
我使用RegexBuddy debbuging我的正则expression式几乎所有的语言非常有用。 比复制/粘贴目标语言。 了不起的工具,并不是很昂贵。
所以我复制/粘贴你的正则expression式,你的问题是[,]正则expression式中的特殊字符,所以你需要逃避它们。 所以正则expression式应该是:/ !@#$ ^ &%*()+=-[\x5B\x5D]\/{}|:<>?,./im
  str.replace(/\s|[0-9_]|\W|[#$%^&*()]/g, "")我这样做了。 但是有一些人比str.replace(/\W_/g,"");更容易str.replace(/\W_/g,""); 
jQuery Form Validator通过在HTML标签处添加数据validation属性使得它更加简单。 检查它的网站。
 使用正则expression式^[^/\\()~!@#$%^&*{«»„““”''|\n\t….,;`^"<>'}+:?®©]*$