Нужно регулярное выражение, чтобы соответствовать довольно похожие шаблоны URL - PullRequest
2 голосов
/ 17 августа 2011

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

Матч:

/1-my-blog-post/  
/100-another-blog-post/

Не совпадают:

/1/  
/100/

Пока у меня есть:

RewriteRule ^(\d{1,2,3}\w+)/$ /post.php?s=$1 [L]

Заранее спасибо, потому что это действительно беспокоит меня!

Ответы [ 2 ]

1 голос
/ 17 августа 2011

Я вижу некоторые проблемы в вашем регулярном выражении

^(\d{1,2,3}\w+)/$

\d{1,2,3} должно быть \d{1,3} Вы просто даете минимальную и максимальную сумму

\w включает также цифры и _, но не -

Возможно, лучшим решением будет

^/(\d{1,3}[a-zA-Z-]+)/$

См. здесь, на Regexr

[a-zA-Z-] - это класс символов, который соответствует символу из того, что определено внутри. Я не знаю, подходит ли вам диапазон букв a-zA-Z, но вы можете добавить любой символ, который хотите сопоставить, в класс, например так: [a-zA-ZöäüÖÄÜ&?-]

0 голосов
/ 17 августа 2011

В Perl это будет

^\d{1,3}[^\d].*

Я предполагаю, что символ после 3-х чисел не может быть числом, конечно, и это с начала полученной строки (как вы положили впример)

...