Javascript:当正则表达式规则匹配空格(/ s)时,switch case不会选择相应的值

时间:2014-11-26 23:33:25

标签: javascript regex

我需要从字符串中逃避空间。为此我实现了下面的正则表达式,它匹配正则表达式规则,但它没有采取相应的开关案例。

例如,如果我有一个像test1" test2这样的字符串,则返回test1"undefinetest2

      var attrRex    = /["\s]/g; 
      var attrMethod = function(match) {
              switch(match) {
                case '"' : return '"';
                case '\s': return ' ';
              }
            };
strings.replace(attrRex, attrMethod);

如果我在这里遗漏了一些东西,你可以告诉我吗?

3 个答案:

答案 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 '&#059;';
      case '=' : return '=';
      case '\^': return '^';
      case '`' : return '`';
      case ' ': return ' ';
    }
  }
}
whatever();
// note that I put in zero's for use with Server Languages