PHP正则表达式只接受选定的单词或根本不接受任何单词

时间:2014-07-18 20:34:33

标签: php regex

我正在尝试使用接受以下内容的正则表达式:

/profile
/profile/photo
/profile/video

但不接受除/ photo和/ video之外的任何内容:

我尝试了以下但没有运气:

/profile((\/(photo|video))|[^\w])/

有人能告诉我我的正则表达式有什么问题。

由于

3 个答案:

答案 0 :(得分:1)

这个'工作:

^\/profile(?:\/(photo|video))?$

关于正则表达式/profile((\/(photo|video))|[^\w])/

  • \w匹配a-z, A-Z, 0-9, _,因此^\w将匹配 任何其他 字符。例如。 profile/profile%profile#会产生匹配。由于您已撰写[^\w]而非[^\w]+ or *,因此它会在non-word

  • 之后与单个profile*here*字符匹配
  • 您没有profile前置/

源自你所写的内容,这也将起作用:

^\/profile(\/(photo|video))?$

答案 1 :(得分:0)

试试这个:

/^\/profile(\/photo|\/video|)?$/

答案 2 :(得分:0)

您可以使用此正则表达式:

^\/profile(\/photo|\/video)?$

这里有一个有效的例子:

http://regex101.com/r/iE2yJ4/1

enter image description here