Регулярное выражение: последовательности - PullRequest
1 голос
/ 05 февраля 2012

Застрял в глупой проблеме.У меня есть поле ввода, где пользователь может вводить ограниченное количество букв (ABCDEFG).Вот проблема: я не хочу, чтобы пользователи могли иметь более 3 букв A, C, E и G в одной подпоследовательности ввода, то есть: нет AAA, CCC, EEE, GGG.И вторая вещь почти такая же, как и первая: не более 1 B, D, F в одной подпоследовательности, то есть: нет BB, DD, FF.Эти два правила как-то должны быть объединены вместе.

Так, например, AABFGECC действителен.GEFFFAABG недействителен.

Надеюсь, вы мне поможете!Спасибо!

PS Если это важно, я пишу свое приложение на Visual Basic.Но я думаю, это не так важно.

Ответы [ 2 ]

2 голосов
/ 05 февраля 2012

Что если вы создали выражение, которое соответствует случаям, которых вы хотите избежать, и вместо этого проверили, что ввод не совпадает?Как это:

([^A-F]|AAA|CCC|EEE|GGG|BB|DD|FF)
1 голос
/ 05 февраля 2012

Хотя вы можете быть умным и использовать обратные ссылки, простое решение состоит в том, чтобы черный список недопустимых последовательностей, используя негативный взгляд вперед :

^(?!.*(?:AAA|CCC|EEE|GGG|BB|DD|FF))[A-G]*$

По логике, то же самое имеет наличие этих 7 недопустимых последовательностей в списке, и проверка строки не содержит ни одной, что также дает вам хорошую альтернативу.

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