正则表达式匹配slu ??

时间:2013-10-08 19:14:05

标签: php regex

我在创建正则表达式以匹配URL slugs时遇到问题(基本上,字母数字“单词”由短划线分隔)

this-is-an-example

我想出了这个正则表达式:/[a-z0-9\-]+$/虽然它将字符串限制为只有字母数字字符和短划线,但它仍然会产生一些误报:

-example
example-
this-----is---an--example
-

我对正则表达式很不好,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:45)

您可以使用:

/^
  [a-z0-9]+   # One or more repetition of given characters
  (?:         # A non-capture group.
    -           # A hyphen
    [a-z0-9]+   # One or more repetition of given characters
  )*          # Zero or more repetition of previous group
 $/ 

这将匹配:

  1. 开头的一系列字母数字字符。
  2. 然后它将匹配一个连字符,然后是一系列字母数字字符,0次或更多次。