5

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

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)的表达式?

4

1 回答 1

6

这似乎过于复杂。

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

应该这样做。

于 2013-06-27T10:19:10.430 回答