以下のフォーマットをサポートする必要があります
3 桁の数字の後にオプションのスペースが続き、その後に次の文字セット ACERV 内で指定された 3 つの非反復文字が続きます (スペースは 2 つの文字の間でのみ有効です)。
有効な形式:
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 を一致させることができますが、1 番目または 2 番目の文字を繰り返すことができます。