需要正则表达式来匹配相似的URL模式

时间:2011-08-17 12:17:13

标签: regex .htaccess mod-rewrite url-rewriting

我需要一个带有以下属性的正则表达式(用于.htaccess),最多可捕获三位数字及其后面的文本:

匹配:

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

不匹配:

/1/  
/100/

到目前为止,我有:

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

提前致谢,因为它真的让我烦恼!

2 个答案:

答案 0 :(得分:1)

我在你的正则表达式中看到了一些问题

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

\d{1,2,3}必须为\d{1,3},您只需提供最低金额和最高金额

\w还包括数字和_,但不包括-

也许更好的解决方案是

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

here online on Regexr

[a-zA-Z-]是一个字符类,它匹配内部定义的字符。我不知道字母范围a-zA-Z是否适合您,但您可以将任何想要匹配的字符添加到类中[a-zA-ZöäüÖÄÜ&?-]

答案 1 :(得分:0)

在Perl中它将是

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

我假设3个数字之后的字符不能是数字,当然,它是从字符串的开头收到的(正如你在你的例子中所说)