如何在JavaScript中测试开关中正则表达式的结果

如何在JavaScript中测试开关中正则表达式的结果,javascript,regex,switch-statement,Javascript,Regex,Switch Statement,我想知道为什么我的正则表达式的结果不符合我想要的情况 var r = "This is a test."; var ex = /a/g; var l = ex.exec(r); alert(l); switch (l) { case "a": alert("good"); break; default: alert("error"); } 如果你运行这个,你可以看到“l”实际上等于“a”,然后应该触发case函数。如果有人知道为什么不是

我想知道为什么我的正则表达式的结果不符合我想要的情况

var r = "This is a test.";
var ex = /a/g;
var l = ex.exec(r);

alert(l);

switch (l)
{
    case "a":
      alert("good");
      break;

    default:
      alert("error");
}

如果你运行这个,你可以看到“l”实际上等于“a”,然后应该触发case函数。如果有人知道为什么不是,请帮忙。感谢您

使用
l[0]
测试以获得匹配的子字符串:

var r=“这是一个测试。”;
var ex=/a/g;
var l=ex.exec(r);
开关(l[0])
{
案例“a”:
警惕(“良好”);
打破
违约:
警报(“错误”);

}
在正则表达式中,您有匹配项,要检查正则表达式生成的匹配项,请使用console.log、devtool内置调试器或类似于@LoganMacMonkey的页面,通过var l=ex.exec(r)返回的类型是一个数组。请参阅,然后尝试使用开关大小写结构将数组与字符串进行比较。由于这个原因,您的代码无法工作

要解决它,请转换

 switch (l)
对于

 switch(l.toString())

希望你也在寻找同样的东西!!:)

因为
l
[“a”,索引:8,输入:“这是一个测试”,组:未定义]
。当您
alert
it时,
l
将使用
toString
转换为字符串。