【问题标题】:Need regex to match rather similar URL patterns需要正则表达式来匹配相当相似的 URL 模式
【发布时间】:2011-08-17 12:17:13
【问题描述】:

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

匹配:

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

不匹配:

/1/  
/100/

到目前为止我有:

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

提前谢谢,因为这真的让我很烦!

【问题讨论】:

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


    【解决方案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öäüÖÄÜ&?-]

    一样将您想要匹配的任何字符添加到类中

    【讨论】:

    • 它与我想要做的不完全匹配,但我从你的回答中弄清楚了。谢谢
    【解决方案2】:

    在 Perl 中是

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

    我假设 3 个数字后面的字符当然不能是数字,它是从接收到的字符串的开头(正如您在示例中所说的那样)

    【讨论】:

    • 我建议你试试这个,因为大多数其他语言的正则表达式都是从 Perl 复制的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多