作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
目前,我有一个简单的路由器类,它接受 URI 并尝试将它们与传入的请求 URI 匹配。它可能尝试匹配请求 URI 的路由的一个简单示例是:
/user/([0-9]+)
因此,这将匹配“user/1”的请求 URI。
现在我正在尝试匹配可选参数。这有效:
/user([/0-9]?)
但是,这似乎允许在段中使用任意数量的斜线。如何强制可选段前面有一个斜杠,然后是数字?
最佳答案
试试下面的正则表达式:
/user(/[0-9]+)?
它将匹配“/user”后跟“/”加上一位或多位数字或单独的“/user”。如果你只想对数字进行分组,你可以将它包含在一个非捕获组中:
/user(?:/([0-9]+))?
您可以在 preg_match
的调用中将其包含在 ^
和 $
中:
preg_match( "/^\/user(?:\/([0-9]+))?$/", "/user/1234", $m);
print_r($m);
关于php - 用于匹配 URI 的可选段的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684445/
我是一名优秀的程序员,十分优秀!