注意:你使用test()
不正确,它是一个正则表达式对象的方法,所以你需要/Yes/.test(field)
而不是field.test('Yes')
. 反正...
如果你只有两种情况,那么我会使用一个if/else/else if
结构:
var field = $(this).val();
var msg;
if(/Yes/.test(field)) {
msg = "FOO\n";
} else if (field === 10) {
msg = "BAR\n";
}
如果您需要添加其他案例,我只需if else {}
在最后添加额外的分支。
如果您有几个特定的数字案例,您可以考虑将它们放在 aswitch
中,并将正则表达式测试放在 adefault
中:
switch (field) {
case 10:
msg = "BAR\n";
break;
case 30:
msg = "whatever\n";
break;
case 50:
msg = "hi\n";
break;
default:
if (/Yes/.test(field)) {
msg = "FOO\n";
else if (/No|N|False|/i.test(field)) {
msg = "blah\n";
}
break;
}
switch (true)
您在问题中提到的选项实际上只是 an 的更混乱版本,因此除非您有一些失败的案例,否则if/else/else if
它并没有真正意义:
switch(true)
case /Yes/.test(field):
case /Y/.text(field):
case /Whatever/.text(field):
msg = "FOO\n";
break;
case field == 10:
msg = "BAR\n";
break;
}
...即使这样,一个if
具有多个条件的连接||
可以说与适当的换行符一样整洁,并且将多个正则表达式组合成一个可能会更整洁。