![](/img/trans.png)
[英]JavaScript Regular Expression to Replace Escape Special Characters from String
[英]How to use Regular expression in JavaScript to replace a set of characters with an empty string?
有人可以帮我写一个正则表达式用空字符串替换这些字符吗? 字符列表如下。
public static char[] delimiters = { ' ', '\r', '\n', '?', '!', ';', '.', ',', '`', ':', '(', ')', '{', '}', '[', ']', '|', '\'', '\\', '~', '=', '@', '>', '<', '&', '%', '-', '/', '#' };
var in = "...";
var out = in.replace(/[ \r\n?!:;\-(){}\[\]\\'"=@><&%\/#]+/g, '');
我可能错过了几个角色。
一种替代解决方案可能是采用白名单而非黑名单方法:
var out = in.replace(/[^\w]+/g, '');
这将删除所有不是单词字符的内容,即字母(大写或小写),数字或下划线。
尝试这个:
var delimiters = [' ', '\r', '\n', '?', '!', ';', '.', ',', '`', ':', '(', ')', '{', '}', '[', ']', '|', '\'', '\\', '~', '=', '@', '>', '<', '&', '%', '-', '/', '#'],
re = new RegExp("[" + delimiters.join("").replace(/[-\\\]]/g, "\\$&") + "]", "g");
str = str.replace(re, "");
在您的情况下,我将编写一个函数,以转义在regexp中可能具有特殊含义的任何字符,应用regexp并返回结果:
String.prototype.exclude = function(blacklist) {
for(var i=0; i<blacklist.length; i++) {
if(blacklist[i].match(/\W/)) {
blacklist[i] = '\\'+blacklist[i];
}
}
return this.replace(new RegExp('['+blacklist.join('')+']', 'g'), '');
};
var myString = "j a\nv\ra?s!c;r.i,p`t:I(s)A{w}e[s]o|m'e\\~=@><&%-/#";
myString.exclude([' ', '\r', '\n', '?', '!', ';', '.', ',', '`', ':', '(', ')', '{', '}', '[', ']', '|', '\'', '\\', '~', '=', '@', '>', '<', '&', '%', '-', '/', '#']);
// returns "JavascriptIsAwesome" which is of course the correct answer
这是您想要的正则表达式:
var re = /[ \r\n?!;.,`:(){}\[\]\|\'\\~=@><&%-\/#]/g;
例如:
var test = "j a\nv\ra?s!c;r.i,p`t:I(s)A{w}e[s]o|m'e\\~=@><&%-/#";
test.replace(re, '')
>>> "javascriptIsAwesome"
仅供参考,正则表达式中此类事物的通用符号为“ /[...]/”-表示“匹配括号内的任何字符”
这可能太激进了。
/[^A-z0-9]/g
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.