所以我有一堆正则表达式,我尝试使用这个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");
}
问题是它不像我在上面的例子中那样工作。 关于它如何运作的任何想法?
答案 0 :(得分:4)
您需要使用不同的检查,而不是使用String#match
,它会返回一个数组或null
,这些检查不能像switch
statement一样严格比较。
您可以使用RegExp#test
并查看true
:
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;
答案 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;