正则表达式验证网址

时间:2015-06-24 09:49:56

标签: php regex

我有以下网址作为主题

localhost/hx
localhost/h.php
localhost/h/x
localhost/h/x/y
localhsot/h?hello
localhost/h

目前我的模式类似/localhost/h[/]*/i,但这不起作用。

我不想匹配第1行或第2行,但其他行有效。

  • 问题1:如果我从与/不匹配的模式中删除?,我将无法使*localhost/h成为可选项。< / p>

  • 问题2:我无法在第5行逃离?,我尝试了\\\,但都没有效果。

3 个答案:

答案 0 :(得分:1)

我使用:

/localhost\/h(?:\/|\?|$)/

答案 1 :(得分:1)

您有两个条件:

  • uri应该在h
  • 之后结束
  • uri应为h,然后是/?以及
  • 之后的一些字符

所以你需要一个替代匹配。

正确的正则表达式为localhost\/h(?:$|[?\/].+) Demo Here

什么是匹配localhost/h litteraly然后用两个替代打开非捕获组(?:

  • $
  • 行尾

|

  • /?后跟至少一个字符.+

答案 2 :(得分:1)

我使用正则表达式使用Negative Lookbehinds

正则表达式.*+(?<!\.php)(?<!hx)

请参阅此DEMO,了解其工作原理。