PHP正则表达式,如何验证URL段?

时间:2011-12-30 00:53:34

标签: php regex

我遇到正则表达式问题。我想匹配将表示URL中的页面的字符串。

我想匹配这些字符串:

  • 制品
  • 物品一些
  • 物品一些-更
  • 物品一些-更多文本
  • 一个
  • A-R-T-I-C-1-E

避免像这样的字符串:

  • -article
  • 文章 -
  • 文章 - 一些
  • 物品一些 - 更多

所以基本上我只需要一个以[a-z]开头的字符串,以[a-z]结尾,并且在中间可以有减号。但我需要多个减号。

我试过了:

^([a-z0-9]+)(\-[a-z0-9]+)*([a-z0-9]+)?$

现在这个工作,我用Rubular打开一个标签,粘贴我正在尝试的东西并提出想法并解决这个问题

但无论如何,还有其他更优雅的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用0-9替换角色类中的\d - 它代表“数字”,但意味着同样的事情。你也可以删除最后的([a-z0-9]+)?,这是完全没必要的,因为紧接在它之前的块以相同的字符类结束。如果你也可以使用大写字母(你可能没有,你没有指定),你可以用[\w\d]替换字符类,这意味着任何字母('单词字符')或数字。