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;
}
}