2014-02-02 2 views
0

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

Поэтому следующий будет разрешен:

ааа

ааа, ааа

ааа, ааа, ааа, ааа, ааа, ааа

Но следующий не будет:

aa

aaa, aa

ааа, аааа

ааа, ааа, аааа

и так далее.

Регулярное выражение я для первой тройки букв:

(^\s*)(\b[a-z]{3}\b){1} 

и повторяющееся запятой и триплет:

(,\b[a-z]{3}\b){0,} 

с помощью {0}, так что он является необязательным, но Повторяя

Но, как вы, вероятно, можете сказать, это не работает, когда я собираю вещи.

Любые идеи будут с благодарностью приняты

Приветствия

ответ

4

Не было бы просто:

^([a-z]{3},)*[a-z]{3}$ 
+0

К сожалению, это не работает. Запятая между первой скобкой означала бы, что она была обязательной, поэтому я не мог просто иметь aaa сам по себе. Также по какой-то причине в vba мне нужно, чтобы/b вокруг значений ограничивалось всего 3 символами. – sigmazen

+0

это соответствует "aaa" на его собственном просто отлично. – JoeClacks

+1

Perfect :-) Спасибо миллион; работает угощение. Ярлык карата и знака доллара - новый для меня; Я пойду еще поучиться. – sigmazen

0

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

* edit Я изменил его, чтобы включить способ иметь разделительный символ [, ], который требуется, а не только дополнительную запятую.

([a-zA-Z]{3}([, ]))* 
+0

Это будет соответствовать: 'abcdefghi' – Toto

Смежные вопросы