2013-06-27 72 views
5

我试着写我的第一个正则表达式。我有以下组合为1 alphabat字母,数字和alphabat括号正则表达式

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" 

我的正常工作经验:

^(([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)?

回答

6

这看起来过于复杂。

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

应该这样做。

+0

非常感谢您的快速响应和其良好的工作.... :) – ARsl

+0

嗨@尼斯我正在使用这个正则表达式“^ [a-zA-Z] [a-zA-Z0-9] *”for以下是否可以向我建议我错在哪里1)应该以字母[a-zA-z]开头2)只能包含数字和字母。 –

+0

@ KK_07k11A0585您似乎没有'$'来定位匹配的结尾。 –

相关问题