用于检测指定 url 的正则表达式
我想使用 preg_match 过滤像 bartender/profili/20/friends 这样的 url。
正则表达式:
/^\/bartender\/profili\/d+\/friends/
不幸的是它不起作用。
有人可以帮忙吗?
I want to filter url's like bartender/profili/20/friends using preg_match.
Regex:
/^\/bartender\/profili\/d+\/friends/
Unfortunately it doesn't work.
Could somebody help?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您想捕获 \d+ 吗?如果是这样,请将它们括在 ( ) 中,这样就可以解决问题。另外,如果你的正则表达式使用 /,我建议使用不同的分隔符,减少这样的转义:
附录:并且 - 就像每个人已经提到的 - 你确实忘记了 d+ 前面的 \ ,但如果你必须转义每个 / ,那么这一点很容易被忽视;)
Do you want to capture the \d+? If so, enclose them in ( ), that should fix it. Also, if you're regex uses /, I'd suggest using a different delimiter, less escaping that way:
Addendum: and - like everyone already mentioned - you indeed forgot the \ in front of the d+, but that was easy to overlook if you have to escape every / ;)
您在
d+
前面有一个斜杠(并且为此情况选择了一个难以阅读的分隔符)。试试这个:#^\/bartender\/profili\/\d+\/friends#
You have a slash in front of
d+
(and have selected a badly readable delimiter for this situation). Try this:#^\/bartender\/profili\/\d+\/friends#
你忘记转义
\d+
you forgot to escape
\d+
您在
d+
之前缺少一个反斜杠:\d+
You are missing a backslash before
d+
:\d+
“
bartender\/profili\/[0-9]+\/friends
”也有效。这是尝试正则表达式的绝佳资源:http://www.regextester.com/"
bartender\/profili\/[0-9]+\/friends
" also works. Here's an excellent resource for trying regular expressions: http://www.regextester.com/您不必转义正斜杠,但需要转义元字符(例如表示十进制数字的“d”)
^/bartender/profili/\d+/friends/
You do not have to escape forward slashes, but you need to escape meta-characters (like 'd' for decimal digits)
^/bartender/profili/\d+/friends/