Исключить набор символов из регулярного выражения - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь найти регулярное выражение (в Java), чтобы проверить, что заданное значение String должно иметь следующий вид:

  • начинается с 4 заглавных букв
  • , за которыми следуют 12 буквенно-цифровых символов
  • не может в любое время включать символы 0, 1 и L

Это то, что у меня так далеко: ^(?:(?![01L])[A-Z]{4}[A-Z0-9]{12}) ... но, тем не менее, я не могу заставить его работать.

Пример данных:

SKDNCNSK8SD30DDD
SKDNCNSK8SD31DDD
SKDNCNSK8SD3IDDD // valid
SKDNCNSK8SD3LDDD
SKDNCNSK8SD3ODDD // valid
SKDNCNSK8SD3ADDD // valid
1234567890123456

1 Ответ

1 голос
/ 13 марта 2019

Ваш базовый шаблон правильный, но отрицательный прогноз, который вы используете, чтобы ограничиться отсутствием 0, 1 и L, неверен.Попробуйте использовать эту версию:

^(?!.*[01L])[A-Z]{4}[A-Z0-9]{12}$

Демо

Отрицательный взгляд (?!.*[01L]) говорит, чтобы утверждать, что [01L] нигде не появляетсяв строке.

...