微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式与可选组

我正在寻找一个正则表达式来匹配以下4个案例(抓住id,所以我可以重写网址)

http://localhost/gallery/test-name/123456
http://localhost/gallery/test-name/123456/
http://localhost/gallery/test-name/123456/video-name/159
http://localhost/gallery/test-name/123456/video-name/159/

目前正则表达式在下面,但它并没有在所有情况下正确抓取ID.那里的任何专家都知道我做错了什么?

^(.*)/gallery/(.*)/([0-9]{1,15})(/)?((.*)/([0-9]{1,15})(/)?)?

解决方法

.*(你第二次使用它)是贪婪的.因此它会消耗所有内容直到您的最后一个ID.这就是为什么第一个ID会丢失,如果你有两个.反而让它变得不合适:

^(.*)/gallery/(.*?)/([0-9]{1,15})(/)?((.*?)/([0-9]{1,15})(/)?)?

我还加了一个?到最后.*如果你想为此添加多参数.但是,无论如何,简单地拆分字符串/可能会简单得多.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐