Вы можете сгруппировать дополнительную точку с 2-4 символами, которые должны следовать за ней: (\.[a-z]{2,4})
.Тем не менее, у вас не будет ни одной, или не более двух из этих групп точек + буквенных символов (\.[a-z]{2,4}){0,2}
.
Обязательное заканчивается на [a-z]
часть, которую вы можете проверить с положительным взглядом за (?<=[a-z])
задавая это как полное регулярное выражение:
^[a-z0-9]+(\.[a-z]{2,4}){0,2}(?<=[a-z])$
Это будет работать в регулярных выражениях Perl и PHP (PCRE), но не в JavaScript, потому что оно не поддерживает просмотр назад.В этом конкретном случае вы можете обойти это ограничение.
Если есть хотя бы одна точка, уже есть гарантия, что она закончится [a-z]
, потому что этот тест находится в группе, в которой находится точкачасть.Если точки нет, вам нужно ввести [a-z]
в конце.Для этого вы можете превратить один или несколько квантификаторов (+
) в ноль или более (*
) и заставить конец равным [a-z]
, когда нет «групп точек».Когда есть группы точек, вы можете сохранить тот же шаблон, но теперь с хотя бы одной обязательной точкой.
^([a-z0-9]*[a-z]|[a-z0-9](+\.[a-z]{2,4}){1,2})$