I want regex which will allow following format
1234567-8
123456B
Now here if user enter second pattern then he should be lock to enter maximum 7 characters so
1234568B
123456V1
this becomes invalid
I have tried
[0-9]{7}-[0-9]|[[0-9]{6}[A-z]{1}]{7,7}
but this fails
答案 0 :(得分:0)
对于您提供的示例输入,您可以使用this。
更简约的版本:^([0-9]{7}-[0-9]|[0-9]{6}[A-Za-z])$
。
请注意,1234567-8
有7位数字和连字符后跟数字,因此整个字符串长度不能仅限于7个字符。
在.NET和几乎所有其他正则表达式中[A-z]
都是错误的,因为它可以匹配的不仅仅是字母。
将量词{1}
放入字符类会使其成为简单的符号组合,因此[{1}]
可以匹配{
或1
或}
。
{7,7}
(= {7}
)不会将整个字符串长度限制为7,因为您没有 anchors (^
和{{1围绕表达式而你"毁了"将前面的量词放入一个字符类中。
答案 1 :(得分:0)
我认为这就是你所需要的:
^(\d{7}-\d|\d{6}[A-Z])$
7位数字,短划线,数字或6位数字,1个大型拉丁字母。
答案 2 :(得分:0)
^ \ d {6}(?:\ D- \ d | [A-Z])$
它可以很好地满足2种以上格式
1234567-8
123456B