正则表达式有点麻烦。我正在尝试测试匹配,但前提是没有任何内容跟随它。所以在下面的例子中,如果我去 test/create/1/2 - 它仍然匹配。我只想匹配它是否明确地 test/create/1 (但那个是动态的)。
if(preg_match('^test/create/(.*)^', 'test/create/1')):
// do something...
endif;
我找到了一些建议在分隔符之前使用 $ 的答案,但它似乎没有做任何事情。或者是 ^ 和 $ 的组合,但我不太明白。正则表达式把我搞糊涂了!
编辑:
我并没有很好地解释这一点,所以只是澄清一下:
如果 URL 是 test/create/{id},我需要 if 语句返回 true - {id} 是动态的(并且是任何长度)。如果 {id} 后跟正斜杠,则 if 语句应该失败。因此,如果有人输入 test/create/1/2 - 它会因为 1 之后的正斜杠而失败。
解决方案
我最终选择了 thedarkwinter 的答案,因为它对我来说最有效,尽管其他答案也确实有效。
我还必须在正则表达式中添加一些额外的内容,以确保它也可以与连字符一起使用,因此最终代码如下所示:
if(preg_match('^test/create/[\w-]*$^', 'test/create/1')):
// do something...
endif;