2013-12-06 5 views
3

Привет Я хочу, чтобы соответствовать строки как /admin/ или /admin/something или /admin, но не /administration или /administrator. Я написал это регулярное выражение:регулярных выражений/администратор/что-то не администратор

$pattern = '%^/admin(/|/[a-zA-Z0-9_-]{1,})?$%' 

и он работает, но это что-то некрасивое. Я хочу знать, может ли он быть написан более чистым и понятным?

+0

Регулярное выражение ** «уродливое» **. Если вы не сделаете это, не используя регулярное выражение. Он останется ** «уродливым» ** – Ali

ответ

5

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

$pattern = '%^/admin(/[\w-]*)?$%' 

Это будет соответствовать любому из:

  • /админ
  • /администратор/
  • /администратор/Foobar
+0

следует отметить, что '.' соответствует намного больше, чем' [a-zA-Z0-9 _-] ' –

+0

@anubhava Спасибо очень muxh, это действительно хорошо, я буду принять через 3 минуты :) –

+0

@Sinomai: Правда, но я не был уверен, что OP означает «что-то», поэтому я держал точку. – anubhava

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