Tim*_*hle 214 javascript regex special-characters
我想要一个将从字符串中删除所有特殊字符的RegExp.我尝试这样的东西,但它在IE7中不起作用,虽然它适用于Firefox.
var specialChars = "!@#$^&%*()+=-[]\/{}|:<>?,.";
for (var i = 0; i < specialChars.length; i++) {
stringToReplace = stringToReplace.replace(new RegExp("\\" + specialChars[i], "gi"), "");
}
Run Code Online (Sandbox Code Playgroud)
RegExp的详细描述也很有用.
ann*_*ata 579
var desired = stringToReplace.replace(/[^\w\s]/gi, '')
Run Code Online (Sandbox Code Playgroud)
正如评论中提到的那样,作为白名单更容易做到这一点 - 替换不在您的安全列表中的字符.
caret(^)字符是集合的否定[...],gi比如全局和不区分大小写(后者有点多余,但我想提一下),本例中的安全列表是数字,单词字符,下划线(\w)和空格(\s).
noi*_*put 92
请注意,如果您仍想要排除某个集合,包括斜杠和特殊字符等内容,则可以执行以下操作:
var outString = sourceString.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '');
Run Code Online (Sandbox Code Playgroud)
请特别注意,为了还包含"减号"字符,您需要使用反斜杠来逃避它,就像后一组一样.如果你不这样做,它也会选择0-9,这可能是不受欢迎的.
fre*_*dev 19
不要使用[^\w\s],这将删除带重音的字母(如àèéìòù),更不用说西里尔文或中文,来自这些语言的信件将被删除.
你真的不想删除这些字母和所有特殊字符.你有两次机会:
[^èéòàùì\w\s].\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"Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.js"></script>Run Code Online (Sandbox Code Playgroud)
小智 14
使用\W或[a-z0-9]regex 不适用于非英语语言,如中文等,
最好在正则表达式中使用所有特殊字符并将它们从给定字符串中排除
str.replace(/[~`!@#$%^&*()+={}\[\];:\'\"<>.,\/\\\?-_]/g, '');
Run Code Online (Sandbox Code Playgroud)
第一种解决方案不适用于任何UTF-8字母表.(它将剪切诸如Їжак之类的文本).我设法创建了一个不使用RegExp的函数,并在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;
}
Run Code Online (Sandbox Code Playgroud)
更新:请注意,此解决方案仅适用于小写和大写字母的语言.在像中文这样的语言中,这是行不通的.
| 归档时间: |
|
| 查看次数: |
402839 次 |
| 最近记录: |