正则表达式只抓住最后一位数

时间:2014-09-30 06:32:22

标签: php regex

我有像这样的正则表达式

'#/somestring/[-a-z0-9]+([0-9]+)/#'

像这样的字符串

http://www.localhost.dev/somestring/test-2014-test-153/

我需要抓取“153”部分网址,这是一个帖子ID,但现在我只抓取“3”,即id部分的最后一位。 我试图用“*”,“。”,“{1,}”修改表达式,但没有成功。

更新

抱歉,忘记提及,'somestring'部分,也必须检查,这是控制器路线。

4 个答案:

答案 0 :(得分:2)

你需要的是这个简单的正则表达式。它可以使用或不使用尾部斜杠。第一组将包含该号码。

somestring\/.+?(\d+)\/?$

DEMO

(如果您的测试用例的最后一段不是最后一段,那么您可以使用somestring\/.+?(\d+)\/ - DEMO

答案 1 :(得分:1)

也许这符合您的需求:

\-([0-9]+)\/

答案 2 :(得分:1)

-(\d+)/

这将有效,如果你在混乱中尝试一个类似的网站 http://regexpal.com/

答案 3 :(得分:0)

somestring\/.*?(\d+)[^\d]*$

尝试这个。这将给出最后一个整数而不管前方是什么。只需抓住捕获。参见演示。

http://regex101.com/r/nA6hN9/42