我想根据searchtext的开头将变量设置为某些值。
我现在有什么:
var action;
switch (searchText.substr(0, 3).toUpperCase()) {
case 'ABC':
action = 'foo';
break;
case 'CDE':
action = 'bar';
break;
}
这很有效。但我想扩展它,以便不仅检查文本是否以ABC
开头,而是ABC
+至少两个数字,例如ABC12
。如何在我的switch case中创建一个正则表达式来验证它?
答案 0 :(得分:5)
您可以将switch(true)
与regex.test
结合使用,将正则表达式嵌入到switch语句中:
switch(true) {
case /^ABC\d\d/g.test(searchText):
action = 'foo';
break;
case /^XYZ$/.test(searchText):
action = 'bar';
break;
}
虽然我个人更喜欢以表格为导向的方法:
function firstMatch(text, mapping) {
for(var i = 0; i < mapping.length; i++)
if(mapping[i][0].test(text))
return mapping[i][1];
}
actions = [
[/^ABC\d\d/g, 'foo'],
[/^XYZ\d\d/g, 'bar'],
]
action = firstMatch(searchText, actions)
答案 1 :(得分:2)
searchText.toUpperCase().match(/^ABC\d{2,}$/)
如果字符串以null
开头并且包含至少2位数字
ABC