2013-09-10 3 views
1

У меня возникают проблемы, чтобы найти регулярное выражение, которое принимает только следующую последовательность символов:Regexp для последовательности символов

D, D0, D00, D00D, D00D0, D00D00, D00D00D, D00P, D00P0, D00P00 , D00P00R, D00P00R0, D00P00R00 и т.д ...

Вот что я сделал

^D$|^D0$|^D00([DPR]0{0,2})*$ 

, но это также принимает строки, как

D00DD, D00DDD, D00PPP

+1

Зачем '[DPR]' представляет в своем регулярном выражении? Это тоже разрешено? Пожалуйста, уточните принцип создания последовательности. –

+0

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

+0

Действительно ли D00P00D00 или D00P00P00 действительны или нет? – Toto

ответ

2

Это должно соответствовать тому, что вы ищете:

^D(00[DPR])*0{0,2}$ 
+1

Вы были быстрее меня, вот [Regexr для этого выражения] (http://regexr.com?3699f) – stema

0

/d(?=0{0,2})+0{0,2}+/ для JavaScript, вы никогда не должны ^D$|^D0$|^D00

1

Только последние нули должно быть от 0 до 2, все остальные должны быть ровно 2.

Это регулярное выражение должно сделать:

^D(00D)*0{0,2}$ 

чек на D и D0 не нужны с вышесказанным.

Test.

0

Вы могли бы использовать:

^D0{0,2}$|^(D0{1,2})+D?$ 
Смежные вопросы