一个变量中有多个regex[重复]

pjngdqdw  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(92)

此问题在此处已有答案

Regular expression pipe confusion(5个答案)
昨天关门了。
我正在尝试创建一个正则表达式为这种格式,AnnnnAAAnnnn,或Annnn。其中A = Alphan = numeric和大小写敏感。
我已经提出了这个解决方案,但它似乎也接受其他不符合格式的输入。

var regexFormat = /^([A-Z]{1})(\d{4})([A-Z]{3})|([A-Z]{1})(\d{4})|\d{4}$/;

我错过了什么?

izkcnapc

izkcnapc1#

您需要将您的alternations放入一个组中,以便^$应用于所有这些alternations;否则您将匹配

  • ^([A-Z]{1})(\d{4})([A-Z]{3})
  • ([A-Z]{1})(\d{4})
  • \d{4}$

请参阅regex101上的正则表达式说明。
注意,如果AAA是可选的,那么AnnnnAnnnnAAA相同,这样可以简化正则表达式:

^(?:[A-Z]{1}\d{4}(?:[A-Z]{3})?|\d{4})$

regex101上的正则表达式演示

相关问题