需要支持以下格式
3 位数字后跟可选空格,后跟在以下字符集 ACERV 中指定的三个非重复字符(空格仅在两个字符之间有效)
有效格式:
123
123 A
123 A v
123 CER
无效格式:
123A
123 AA
123 A - when followed by a space
到目前为止我所拥有的 - 我可能会因为不一定需要的前瞻而过度复杂化:
^([0-9]{3}) # - first 3 digits
(\s(?=[ACERV]))([ACERV]) # - allow space only when followed by ACERV
(?!\3)(?=[ACERV ]{0,1})([ACERV ]{0,1}) # - do not allow 1st char to repeat
(?!\3) # - do not allow 1st char to repeat
(?!\4) # - do not allow 2nd to repeat
(?!\s) # - do not allow trailing space
(?=[ACERV]{0,1})([ACERV]{0,1})|[0-9]{3}$
添加前瞻 (?!\4) 时,它无法匹配有效格式 123 A - 将 (?!\4) 上的量词修改为 (?!\4)* 或 (?!\4)?允许 123 A 匹配,但允许重复第一个或第二个字符。