此问题在此处已有答案:
Regular expression pipe confusion(5个答案)
昨天关门了。
我正在尝试创建一个正则表达式为这种格式,AnnnnAAA
,nnnn
,或Annnn
。其中A = Alpha
和n = numeric
和大小写敏感。
我已经提出了这个解决方案,但它似乎也接受其他不符合格式的输入。
var regexFormat = /^([A-Z]{1})(\d{4})([A-Z]{3})|([A-Z]{1})(\d{4})|\d{4}$/;
我错过了什么?
1条答案
按热度按时间izkcnapc1#
您需要将您的alternations放入一个组中,以便
^
和$
应用于所有这些alternations;否则您将匹配^([A-Z]{1})(\d{4})([A-Z]{3})
或([A-Z]{1})(\d{4})
或\d{4}$
请参阅regex101上的正则表达式说明。
注意,如果
AAA
是可选的,那么Annnn
与AnnnnAAA
相同,这样可以简化正则表达式:regex101上的正则表达式演示