JavaScript中的正则表达式验证(测试)

时间:2009-04-20 15:26:28

标签: javascript regex

似乎正则表达式问题很常见,因为每个问题似乎都适用于特定情况。话虽如此,这是我的具体案例......

我需要验证员工ID是否为两种特定格式之一。第一种格式(以及我可靠工作的格式)是(没有引号):“A000000”,其中“A”可以是任何字母字符,“0”可以是0到9之间的任何数字。另一种要求因为这只需要员工ID的前两个位置,这意味着用户可以输入“A0”并且它将进行验证(此员工ID在SQL语句中使用LIKE - ... SID LIKE“A0%”再说一次,我用的是......

[A-Z]{1}\d{1,6}

第二种格式是给我带来麻烦的。同样的要求在上面只有输入字符串的前两个位置是必需的,其他任何东西都是可选的,但如果输入它必须遵守指定的格式。格式为(无引号):“000000A”。我遇到问题的部分是确保如果输入的数字超过两位,则输入的下三到六个数字是数字,如果输入了最后一个数字,那么它必须是一个字符。所以有效的输入可能是......

“00”或“000”或“0000”或“00000”或“000000”或“000000A”,但不是“0”或“0A”或“00A”,或“000A”等,或“ 0000000" 。以下是我目前为此格式所做的...

\d{2}(\d{1,4})?[A-Z]{0,1}

问题在于,这允许在三到六的位置输入字母字符。它不允许在前两个位置使用任何字母字符(好),并且不允许在第七个(最后)位置使用任何数字字符(好)。它只是那些可选的第三到第六个字符,允许字母字符让我感到悲伤。

我希望这是足够的信息(或者可能不是太多)。任何帮助将不胜感激。谢谢!!!

2 个答案:

答案 0 :(得分:2)

试试这个表达式:

(\d{2,5}|\d{6}[A-Z]?)

匹配2到5位数字(\d{2,5})或6位数字和可选字母(\d{6}[A-Z]?)。如果您想要完全匹配,请使用^$锚标记开头和结尾:

^(\d{2,5}|\d{6}[A-Z]?)$

答案 1 :(得分:0)

对于第一个,{1}是多余的:

  

[A-Z] [0-9] {1,6}

对于第二个,也许这个:

  

\ d {2} \ d {0,1} \ d {0,1} \ d {0,1} \ d {0,1} [A-Z] {0,1}