JS:切换案例中的正则表达式

时间:2017-01-27 10:35:16

标签: javascript

我尝试用switch case测试一个特定的字符串,然后找到这段代码:

let prop = "date myData";
switch (true) {
          case /str/.test(prop) :
            console.log("tata");
            break;

          case /date/.test(prop):
            console.log("toto");
            break;

          case /enum/.test(prop) :
            console.log("titi");
            break
          default :
            console.log("Nada");
            break;
}

它有效,但它无法解决我的问题。我想特别得到字符串“date”。以前没有任何事情,没有任何事

我这个例子,我希望我的控制台显示“Nada”。

我不知道如何使用此代码执行此操作。 一个办法 ? :)

3 个答案:

答案 0 :(得分:1)

您需要正则表达式中的开始和结束符号

/^date$/

或带字符串和等式的简单测试

prop === 'date'

switch (prop) {
    case 'date':
        console.log('date');
        break;
}

答案 1 :(得分:1)

对于你所拥有的东西,开关不是你的第一选择 - 你也只是比较字符串的相等性 - 所以更简单的方法是以下

let prop = "date myData";
let strings = {str: "tata", date: "toto", enum:"titi"}
let res = strings[prop] || "Nada";
console.log(res);

答案 2 :(得分:0)

要测试多个字符串的相等性,可以像这样堆栈case语句:

switch (true) {
  case prop === "date":
  case prop === "param2":
    // Do something
    break;
}

或者测试是否包含在静态数组中:

switch (true) {
  case ["date", "param2"].includes(prop):
    // Do something
    break;
}

尽管启用true可能不是最有效的方法。