Javascript 是否使用部分值/正则表达式进行切换?

Javascript 是否使用部分值/正则表达式进行切换?,javascript,pattern-matching,Javascript,Pattern Matching,假设我有一个开关: switch(str){ case "something": //a defined value // ... break; case /#[a-zA-Z]{1,}/ //Matches "#" followed by a letter } 我几乎可以肯定,以上这些几乎是不可能的……但实现类似目标的最佳方式是什么?可能只是简单的if..else..ifs?那太无聊了 那么您将如何实现这一点呢?您可以使用单个regexp。它不一定不那么无聊,但它完成了工作

假设我有一个开关:

switch(str){
  case "something": //a defined value
    // ...
  break;
  case /#[a-zA-Z]{1,}/ //Matches "#" followed by a letter
}
我几乎可以肯定,以上这些几乎是不可能的……但实现类似目标的最佳方式是什么?可能只是简单的
if..else..if
s?那太无聊了


那么您将如何实现这一点呢?

您可以使用单个regexp。它不一定不那么无聊,但它完成了工作

var result = /(something)|(#[a-zA-Z]{1,})/.exec(str);
if (!result) {
    // Handle error?
} else if (result[1]) {
    // something
} else if (result[2]) {
    // #[a-zA-Z]{1,} 
}

在开始切换之前,您可以获得各种模式的匹配, 并将案例设置为匹配的索引

(其他条件句即使不是更有效,也更容易阅读。)

//var str= 'something';
var str='#somethingelse';
var M=  /^(something)|(#[a-zA-Z]+)$/.exec(str);
if(M){
    switch(M[0]){
        case M[1]:
        // ...
        alert(M[1]);
        break;
        case M[2]:
        //...
        alert(M[2])
        break;
    }
}