检查文本是否以字符后跟数字开头

时间:2013-04-30 07:51:21

标签: javascript regex

我想根据searchtext的开头将变量设置为某些值。

我现在有什么:

var action;

switch (searchText.substr(0, 3).toUpperCase()) {

    case 'ABC':
        action = 'foo';
    break;

    case 'CDE':
        action = 'bar';
    break;

}

这很有效。但我想扩展它,以便不仅检查文本是否以ABC开头,而是ABC +至少两个数字,例如ABC12。如何在我的switch case中创建一个正则表达式来验证它?

2 个答案:

答案 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