1

我正在尝试锻炼一个正则表达式模式来验证一个字符串,该字符串由两个长度不同但总长度保持不变的部分组成。

总长度 = 7 个开始部分仅字母字符 1-3 个字符 结束部分 4-6 个数字

组合 1 Alpha + 6 位或 2 Alpha + 5 位或 3 Alpha + 4 位。在第二个和第三个选项中,第一个字符可以是空格。

到目前为止我所拥有的是 ^(?:([\sA-Z][AZ]{2})(\d{4})|[\sA-Z]AZ|AZ)$ 可以简化吗?最后我怎样才能有和可选的 Alpha 字符?

4

2 回答 2

0

这可能有效

 # (?i)^(?=.{7}$)(?:[a-z]{1,3}|[ ][a-z]{2,3})\d{4,6}[a-z]?$

 (?i)                     # Case independent
 ^                        # BOL
 (?= .{7} $ )            # 7 chars total

 (?:
      [a-z]{1,3}          # 1 to 3 alpha
   |  
      [ ] [a-z]{2,3}      # or, space plus 2 to 3 alpha
 )

 \d{4,6}                  # 4 to 6 digits
 [a-z]?                   # optional alpha char
 $                        # EOL
于 2013-11-11T22:59:46.990 回答
0

您需要向前看以断言总长度,并向前看以防止“空格数字”开始:

^(?=.{7}$)(?! \d) ?[a-zA-Z]{1,3}\d{4,6}$

查看包含几个边缘案例的现场演示。

于 2013-11-11T22:54:18.100 回答