正则表达式 - 具有特定开头和结尾的URL,中间有一些东西

时间:2011-04-26 14:50:20

标签: regex

我想在开头用“/ en”选择所有字符串(部分URL),然后在中间选择一个随机字符串,最后选择“aspx”,例如: “/en/about-us-or/any-other-string-12345/page.aspx”

这是我目前的做法。

^/en.*aspx$
  • ^/en - 在开头是“/ en”

  • .* - 然后是中间的随机字符串

  • aspx$ - 最后是一个aspx

我想知道为什么它不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我的猜测是你的输入字符串是完整的URI(如:“http://www.example.com/en/about-us-or/any-other-string-12345/page.aspx”)。

如果是这样,你的正则表达式将失败,因为^标志匹配字符串的开头,在这种情况下,它恰好位于http之前的h。

$ character还会导致正则表达式失败,看起来像这样的“http://www.example.com/en/about-us-or/any-other-string-12345/page.aspx?参数=值”。

编辑: 要真正回答问题,请尝试从正则表达式中删除^和$:/en.*aspx

答案 1 :(得分:0)

/字符在正则表达式中有特殊含义 - 所以你必须将其转义(\ /)同样对点星(。*)进行分组:

^\/en(.*)aspx$

答案 2 :(得分:0)

我的猜测是你正在使用它作为.htaccess重写规则的一部分。提交给RewriteRule的URL路径基于每个目录,并且永远不会有初始/(它被剥离)。尝试从模式中删除初始/,如下所示:

^en/(.*)\.aspx$