用于在JavaScript中进行正则表达式匹配的Switch Case语句

时间:2017-11-14 08:41:35

标签: javascript

所以我有一堆正则表达式,我尝试使用这个If语句查看它们是否与另一个字符串匹配:

TRANSFORM_MACRO(arctan2, static_cast<T(*)(T, T)>(std::atan2))

但是一旦我需要使用更多的正则表达式,这就变得非常难看,所以我想使用这样的switch case语句:

if(samplestring.match(regex1)){ 
 console.log("regex1");
} else  if(samplestring.match(regex2)){     
 console.log("regex2");
} else  if(samplestring.match(regex3)){
 console.log("regex3");
}

问题是它不像我在上面的例子中那样工作。 关于它如何运作的任何想法?

2 个答案:

答案 0 :(得分:4)

您需要使用不同的检查,而不是使用String#match,它会返回一个数组或null,这些检查不能像switch statement一样严格比较。

您可以使用RegExp#test并查看true

&#13;
&#13;
var regex1 = /a/,
    regex2 = /b/,
    regex3 = /c/,
    samplestring = 'b';

switch (true) {
    case regex1.test(samplestring):
        console.log("regex1");
        break;
    case regex2.test(samplestring):
        console.log("regex2");
        break;
    case regex3.test(samplestring):
        console.log("regex3");
        break;
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

switch (samplestring) {
  case samplestring.match(regex1):
    console.log("regex1");
    break;
  case samplestring.match(regex2):
    console.log("regex2");
    break;
  case samplestring.match(regex3):
    console.log("regex3");
    break;
}

尝试添加break;