Оценка заданной строки на основе регулярных выражений - PullRequest
1 голос
/ 21 февраля 2020

Я генерирую случайное число длиной 6 символов. Это могут быть все цифры c, алфавиты и алфавиты c. Я должен проверить эту строку на основе предоставленного регулярного выражения. Например:

Если строка является цифрой c [0-9], то она не должна содержать все нули.

Если строка является алфавитом c [a-zA-Z], то последний символ не может быть X или x. И строка не может начинаться с SVC или svc.

Если строка alphanumeri c [0-9a-zA-Z], то она не может содержать все нули 0. И строка не может начинаться с тройных нулей 000 и не может заканчиваться x или X.

Мне нужны регулярные выражения для них, которые можно использовать с Java Matcher.

1 Ответ

2 голосов
/ 21 февраля 2020

Это должно работать:

/^((?!.{7,})[0-9]*[1-9]+[0-9]*|(?!(SVC|svc))[a-zA-Z]{5}[a-wy-zA-WY-Z]|(?!(000|.{7,}))[0-9a-zA-Z]*([a-zA-Z][0-9]|[0-9][a-zA-Z])+[0-9a-zA-Z]*[a-wy-zA-WY-Z])$/gm

Я не могу объяснить это регулярное выражение, так как оно слишком длинное и просто повторяет одно и то же понятие снова и снова. Однако, учитывая следующий ввод, он соответствует только первым пяти строкам:

002000
jfkasd
002dfd
sVcabc
abc65i
000000
00012c
0123ax
SVCabx
svcabc
abc65x
abc65X

Здесь - первоначальная попытка, которую я предложил, которая не удовлетворяет всем условиям OP, но это сопровождается объяснением:

/^((?!.{7,})[0-9]*[1-9]+[0-9]*|[a-zA-Z]{5}[a-wy-zA-WY-Z]|(?!000)[0-9a-zA-Z]{6})$/gm

Объяснение (которое можно прочитать на самой странице, на которую ведут ссылки):

  • У нас есть три варианта, которые должны соответствовать всей строке: ^(…|…|…)$;
  • 2-й сигнал тревоги прост: пять букв, за которыми следует одна буква, которая не является x или X, [a-zA-Z]{5}[a-wy-zA-WY-Z] ([^xX] тоже будет соответствовать цифрам или чему-либо еще).
  • 3-й вариант немного сложнее: шесть букв или цифр, которым не предшествует 000; здесь используется отрицательный взгляд, и он работает из-за якоря ^ (если вы удалите его, он сломается).
  • 1-й вариант аналогичен: ноль или более цифр, за которыми следует один или более ненулевых цифр, за которыми следуют ноль или более цифр; все не начинаются с 7 или более символов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...