所以我想说我有这个转换:
switch(str){
case "something": //a defined value
// ...
break;
case /#[a-zA-Z]{1,}/ //Matches "#" followed by a letter
}
我几乎可以肯定上述内容几乎是不可能的......但是最好的方法是什么?也许只是简单的if..else..if
?那太无聊了......
那么你将如何实现这一目标呢?
答案 0 :(得分:0)
您可以使用单个正则表达式。它不一定不那么无聊,但它可以完成工作。
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,}
}
答案 1 :(得分:0)
在开始切换之前,您可以获得各种模式的匹配, 并将案例设置为匹配的索引。
(如果效率不高,其他条件会更容易阅读。)
//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;
}
}