我正在尝试使用Regex模式来验证一个字符串,该字符串由2部分组成,这些部分的长度各不相同,但总体长度保持不变。
总长度=7开始段alpha字符只有1-3个字符结束部分4-6位数
组合1阿尔法+6位或2阿尔法+5位或3阿尔法+4位数。在第二个和第三个选项中,第一个字符允许为空格。
到目前为止,我得到的是^(?:(\sA-Z{2})(\d{4})x\sA\A-Z)$,可以简化吗?我怎么能有和可选的阿尔法字符在结尾?
发布于 2013-11-11 22:54:18
您需要向前看一看才能断言整个长度,而需要向前看负值以防止“空格数字”开始:
^(?=.{7}$)(?! \d) ?[a-zA-Z]{1,3}\d{4,6}$请参见带有几个边缘情况的现场演示。
发布于 2013-11-11 22:59:46
这也许能行
# (?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
$ # EOLhttps://stackoverflow.com/questions/19917550
复制相似问题