javascript - 为什么我的 switch 语句不匹配任何大小写?

标签 javascript regex

当我使用 switch 语句 时,没有 的情况与“前缀”匹配。 但是,如果我用 if-else 替换 switch 语句,一切正常。 为什么?

谢谢

//UPDATED
//el is DIV element. For example el.id='mph_4';
var prefix = /^[a-z]+/.exec(id);
//------------- SWTICH -------------------------
switch (prefix) {
    case 'mph':
        return 1;
    case 'ph':
        return 2;
    case 'mh':
        return 3;
}
//---------------IF-ELSE------------------------
 if (prefix == 'mph') {
        return 1;
    }
    else if (prefix == 'ph') {
        return 2;
    }
    else if (prefix == 'mh') {
        return 3;
    }

最佳答案

RegExp.exec() 返回一个数组。所以 prefix 实际上是数组而不是字符串。如果您确定 exec 返回单个字符串,您可以将 switch 语句更改为:

switch (prefix[0]) {
    case 'mph':
        return 1;
    case 'ph':
        return 2;
    case 'mh':
        return 3;
}

关于javascript - 为什么我的 switch 语句不匹配任何大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5403617/

相关文章:

javascript - 销售点系统

javascript - 使用javascript更改iframe的src不显示新页面

r - 提取R中特定模式包围的字符串中的所有数字

第一行 < 和 "!"的 Java 正则表达式

regex - 如何使用正则表达式在 VS Code 的每行末尾添加一个字符串?

javascript url 值到多个字段

javascript - 在提交链接到 php 中的不同页面后保持模式打开

javascript - 将 $scope 对象传递给路由,如果刷新则保留

javascript - 正则表达式不替换字符串中的斜杠

python - Pandas:通过正则表达式在单列中提取不同的值