带有正则表达式的Javascript inoperant Switch Case

hor*_*bzz 4 javascript regex case switch-statement

看起来javascript 开关案例不喜欢正则表达式作为一个案例,因为它适用于静态值,但我无法在case语句中使用正则表达式获得预期的答案.

您是否会确认js解释器的限制并提出解决方法(我的意思是不是if-then块套件)?

谢谢

示例(未给出预期答案,例如'case3'):

<script type="text/javascript">
var testme = "pwd_foo";
var response = false;
var reg = /^pwd.+/;

switch (testme) {
case 'pwd':
    response = 'case1';
    break;
case reg.test:
    response = 'case2';
    break;
case /^pwd.+/:
   response = 'case3';
   break;
default:
    response = 'do sthg else';
}

alert('reg test: ' + reg.test(testme)+'\nresponse:' + response);
</script>
Run Code Online (Sandbox Code Playgroud)

mpl*_*jan 9

你的测试并没有真正适合转换.如果必须,您可以这样做,不推荐:

在这里演示

var testme = "pwd_foo", response;
var reg = /^pwd.+/;

switch (true) {
case testme=='pwd':
    response = 'case1';
    break;
case reg.test(testme):
    response = 'case2';
    break;
default:
    response = 'do sthg else';
}

alert('reg test: ' + reg.test(testme)+'\nresponse:' + response);
Run Code Online (Sandbox Code Playgroud)