2011-08-17 68 views
2

我需要一个正则表达式(在.htaccess中使用)具有以下属性,捕捉到一个三位数字和文本以下是:需要正则表达式匹配,而类似的URL模式

比赛:

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

不匹配:

/1/ 
/100/ 

到目前为止,我有:

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

在此先感谢,因为它确实在扰乱我!

回答

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öäüÖÄÜ&?-]

+0

它没有完全匹配我想要做的,但我从你的答案中找出它。谢谢 – 2011-08-30 22:28:05

0

在Perl这将是

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

我假设的3个数字后的字符不能是数字,当然,它从字符串的开头是recived(因为你把它放在你的榜样)

+0

我建议你试试这个,因为大多数正则表达式在其他语言是从Perl复制的。 – m0skit0 2011-08-17 13:03:36