php中的正则表达式问题

时间:2014-04-29 05:57:34

标签: php regex preg-match

我的字符串将如下

'popular-game-show-identifier-popular-games-mv-11'

在上面的字符串中我想检查,

  1. 每个单词必须后跟连字符,第一个单词除外。
  2. 在字符串identifier之间必须存在。
  3. 字符串的结尾必须包含附加到数字的-mv-
  4. 检查正常表达后的1,3,工作正常。

    /[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*(-mv-(\d+))$/
    

    现在我想检查2,因为我将上面的表达式修改为

    /[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*(\-identifier\-)(\-[a-zA-Z0-9]+)*(-mv-(\d+))$/
    
    如果我使用上面的正则表达式检查所有3个条件,则

    preg_match()始终返回0。我没有到达我做错的地方。

1 个答案:

答案 0 :(得分:3)

你有"额外"连字符

/[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*(\-identifier\-)(\-[a-zA-Z0-9]+)*(-mv-(\d+))$/

应该是

/[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*(\-identifier)(\-[a-zA-Z0-9]+)*(-mv-(\d+))$/