Ваше регулярное выражение (\/|.*\/)
использует чередование, которое соответствует либо косой черте, либо любым символам, жадным 0+ раз, с последующим совпадением косой черты.
Так, например, /ghi/jkl
, первое совпадение будетпервый слеш.Тогда эта часть .*
следующего шаблона будет совпадать с первой g
до конца строки.Двигатель будет возвращаться к последнему наклонному слешу, чтобы заполнить весь шаблон .*\/
.
Конечный jkl
больше не может быть сопоставлен ни с шаблоном чередования.
Обратите внимание, что вы нене нужно экранировать косую черту.
Вы можете использовать:
^/(?:\w+/?){0,2}$
В Java:
String regex = "^/(?:\\w+/?){0,2}$";
Regexдемо
Пояснение
^
Начало строки /
Матч прямой косой черты (?:
Группа без захвата \w+
Совпадение 1+ символов слова (Если вы хотите сопоставить более чем \w
, вы можете использовать класс символов и добавить к нему то, что выхотите совпадение) /?
Совпадение необязательный слеш
){0,2}
Закройте группу без захвата и повторите 0 - 2 раза $
Конец строки