我需要一个正则表达式来匹配以下任何格式的字符串:
我的第一个和第三个模式是正确的,这就是我提出的
^(([a-zA-Z]{4}[0-9]{8})|([0-9]{10}))$
我无法将第二种模式纳入其中。
答案 0 :(得分:5)
^[a-zA-Z]{4}[0-9]{8}(-[0-9]{4})?$
即XXXXnnnnnnnn
和可选 -nnnn
部分。
XXXXnnnnnnnn
XXXXnnnnnnnn-nnnn
你可以省略最外面的括号,因为这个组等于整个匹配(捕获组0)。
修改强>
更新以匹配nnnnnnnnnn
:
^[0-9]{10}|[a-zA-Z]{4}[0-9]{8}(-[0-9]{4})?$
匹配
nnnnnnnnnn
XXXXnnnnnnnn
XXXXnnnnnnnn-nnnn
编辑#2
作为对评论的回应,这是我能够烹饪的最短/最可读的:
^[0-9]{10}|[a-zA-Z]{4}[0-9]{8}(-[0-9]{4}|)$
与上面相同的特征。
答案 1 :(得分:0)
^ \瓦特{4} \ d {8}( - \ d {4})?$
修正了拼写错误
答案 2 :(得分:0)
你错过了第二种格式的“ - ”......
答案 3 :(得分:0)
^[a-zA-Z]{4}([0-9]{8}|[0-9]{8}\-[0-9]{4})$