我需要从字符串中逃避空间。为此我实现了下面的正则表达式,它匹配正则表达式规则,但它没有采取相应的开关案例。
例如,如果我有一个像test1" test2
这样的字符串,则返回test1"undefinetest2
var attrRex = /["\s]/g;
var attrMethod = function(match) {
switch(match) {
case '"' : return '"';
case '\s': return ' ';
}
};
strings.replace(attrRex, attrMethod);
如果我在这里遗漏了一些东西,你可以告诉我吗?
答案 0 :(得分:0)
在switch语句中,每个测试都等同于truthy样式的字符串比较。它适用于其他角色,因为它们基本上是转义的,等等\"
变为"
。在您的情况下,\s
变为s
。愚蠢我知道。
如果你要使用另一个正则表达式进行测试,它可以工作,或者更简单地只是测试字面上的空间字符' '
。
答案 1 :(得分:0)
答案是,
var attrRex = /["\s]/g;
var attrMethod = function(match) {
switch(match) {
case '"' : return '"';
case ' ' : return ' ';
}
};
答案 2 :(得分:0)
试试这个:
function whatever(str){
return str.replace(/[\/\*\+\^'"%`=,; ]/, function re(m){
switch(match){
case '"' : return '"';
case '%' : return '%';
case "'": return ''';
case '\*': return '*';
case '\+': return '+';
case ',' : return ',';
case '\/': return '/';
case ';' : return ';';
case '=' : return '=';
case '\^': return '^';
case '`' : return '`';
case ' ': return ' ';
}
}
}
whatever();
// note that I put in zero's for use with Server Languages