我正在尝试匹配一个字符串。例如,在以下字符串中,首先应该匹配,第二个不应该匹配。
/users/akinuri/
/users/akinuri/asd/
我尝试过一种消极的前瞻,但它没有用。显然我做错了。
if (preg_match("/\/users\/.*?\/(?!.*\/)/", "/users/akinuri/asd/")) {
echo "match";
}
我正在尝试(尝试创建路线系统)。现在,我只是想确定所请求的uri是否有效。如果访问者请求第二个字符串,它应该返回false,我将返回一个未找到的页面。例如,在SO上测试它。第二个url返回一个未找到的页面。
https://stackoverflow.com/users/2202732/akinuri/
https://stackoverflow.com/users/2202732/akinuri/asdasd
那么,我可以使用正则表达式进行检查吗?如果是这样,怎么样?我做错了什么?
或者我应该拆分文本然后再进一步检查?这似乎有点多余。
答案 0 :(得分:1)
你不需要前瞻。您可以使用否定字符类[^/]+
来匹配除/
之外的任何字符的1+。您还需要在正则表达式中使用锚点以确保匹配完整输入。
对于PHP代码,您可以使用此正则表达式:
'~^/users/[^/]+/?$~'
请注意/?$
使尾随斜杠成为可选匹配。