如何编写正则表达式模式以匹配AAAA00000000-0000?

时间:2010-11-24 14:39:45

标签: regex

我需要一个正则表达式来匹配以下任何格式的字符串:

  1. “AAAA00000000”
  2. “AAAA00000000-0000”
  3. “0000000000”
  4. 我的第一个和第三个模式是正确的,这就是我提出的

    ^(([a-zA-Z]{4}[0-9]{8})|([0-9]{10}))$
    

    我无法将第二种模式纳入其中。

4 个答案:

答案 0 :(得分:5)

^[a-zA-Z]{4}[0-9]{8}(-[0-9]{4})?$

XXXXnnnnnnnn可选 -nnnn部分。

  • XXXXnnnnnnnn
  • XXXXnnnnnnnn-nnnn

你可以省略最外面的括号,因为这个组等于整个匹配(捕获组0)。

修改
更新以匹配nnnnnnnnnn

^[0-9]{10}|[a-zA-Z]{4}[0-9]{8}(-[0-9]{4})?$

匹配

  • nnnnnnnnnn
  • XXXXnnnnnnnn
  • XXXXnnnnnnnn-nnnn

编辑#2
作为对评论的回应,这是我能够烹饪的最短/最可读的:

^[0-9]{10}|[a-zA-Z]{4}[0-9]{8}(-[0-9]{4}|)$

与上面相同的特征。

答案 1 :(得分:0)

^ \瓦特{4} \ d {8}( - \ d {4})?$

修正了拼写错误

答案 2 :(得分:0)

你错过了第二种格式的“ - ”......

答案 3 :(得分:0)

^[a-zA-Z]{4}([0-9]{8}|[0-9]{8}\-[0-9]{4})$