括号中的第一个字母,数字和字母的正则表达式

时间:2013-06-27 10:17:27

标签: regex

我正在尝试编写我的第一个正则表达式..我有以下组合的价值

letters [upper or lowercase]
numbers [0-9]
letters in parentheses [(M)]
no spaces or other characters

一些例子:

OK: "A3"
OK: "N15"
OK: "A126"
OK: "B6469"
OK: "A57(M)"
OK: "A1(M)"

NOT OK: "TF9 3TF"
NOT OK: "B64 69"

My Regular Exp:

^(([a-zA-Z][1-9]\([a-zA-Z]\)?)|([a-zA-Z][1-9][1-9]\([a-zA-Z]\)?)|([a-zA-Z][1-9]?)|([a-zA-Z][1-9][1-9]?)|([a-zA-Z][1-9][1-9][1-9]?)|([a-zA-Z][1-9][1-9][1-9][1-9]?))$

它对我来说很好。但我想要它的最佳解决方案,就像我的正则表达式似乎太长,因为对于每个组合我做一个表达,然后结合所有这些,但我想减少我的正则表达式,如我的示例代码包含第一个字母然后数字可以是一个或多个,但直到5。 告诉我如何制作一个适用于(A1,A12,A123,A1234,A12345)的表达式?

1 个答案:

答案 0 :(得分:6)

这似乎过于复杂。

^[a-zA-Z]\d{1,5}(?:\(M\))?$

应该这样做。