正则表达式与可选组

前端之家收集整理的这篇文章主要介绍了正则表达式与可选组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一个正则表达式来匹配以下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})(/)?)?

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

猜你在找的正则表达式相关文章