如何在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
转换为字符串。