Регулярное выражение для строки от 0 до 299, за которым следует некоторая комбинация x и y - PullRequest
1 голос
/ 22 февраля 2020

Мое регулярное выражение должно принимать любую строку, такую ​​как: 299xxy, 4xyy, 156xy, 23xxxyyy, 23xxyxyy, 0xxyy. И такие строки не принимаются: 300xy, 400yx, 305yyyx, 444yxyxy , что очевидно, потому что мой проект допускает только числа в диапазоне 0 и 299 включительно , за которым следует x, за которым следует любая комбинация из нуля или более x и y, и заканчивается y

Пока это то, что я придумал ^[0-2][0-9]*[0-9]?$ для проверки чисел от 0 до 299, и если добавлено условие x, y, то это то, что я думаю, должно быть моим окончательным ответом ^[0-2][0-9]*[0-9][x-y]*?$

Но когда я тестирую на https://regex101.com/r/gT8wK5/1, некоторые комбинации принятых строк не дают мне подходящего решения.

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

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

Я бы использовал это регулярное выражение:

^[0-2]?\d?\dx[xy]*y$

Демонстрация и объяснение

0 голосов
/ 22 февраля 2020

Я предположил, что число не может иметь начальные нули, поскольку в вашем примере его нет, что усложнило

\b((?:(?:[12]\d\d)|(?:[1-9]\d)|\d)x[xy]*y)

Хотя не так сложно, как кажется на первый взгляд. https://regex101.com/r/gT8wK5/1322

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...