Джава.Регулярные выражения.Как смешивать НЕ с AND? - PullRequest
0 голосов
/ 29 мая 2018

У меня есть строка (VIN), подобная этой:

String vin = "XTC53229R71133923";

Я могу использовать ИЛИ, чтобы увидеть, есть ли символы Q, O, I:

String regExp = ".*[QOI].*";

Это работает.

Однако я не могу проверить, что ни одна из этих 3 букв НЕ находится в строке.

Это означает: (НЕ Q) И (НЕ O) И (НЕ I).Я пробовал негативно смотреть:

String regExp = "(?!.*[QOI].*)";

Это не работает.В «XTC5 Q 3229R71133923» возвращается true .

основной выпуск -У меня есть 2 условия:

  1. Количество символов (A-Z0-9) в строке должно быть 17.
  2. Строка не должна иметь Q, O, I.

Я могу проверить это с помощью двух регулярных выражений:

  1. String regExp = "^([A-Z0-9]{17})$"; //should be true
  2. String regExp = ".*[QOI].*"; //should be false

Но есть ли способ объединить эти 2 проверки в одном регулярном выражении ?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Вот, пожалуйста, ^[^QOI]{17}$.Запуск класса charcter с помощью ^ означает «не совпадать ни с одним из этих символов».

0 голосов
/ 29 мая 2018

Как насчет использования пользовательского диапазона, который не включает символы, которые вам не нужны?

String regexp = "^([A-HJ-NPR-Z0-9]{17})$";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...