2014-09-30 41 views
0

我有这样正则表达式争夺唯一的最后一个数字

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

和字符串这样

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

我需要抓住URL的“153”部分的正则表达式,这是一个文章ID,但现在我只抓住“3”,身份证部分的最后一位数字。 我试图用“*”,“。”,“{1,}”修改表达式,但没有成功。

UPDATE:

对不起,忘了提, 'somestring' 的一部分,也必须被选中,这是一个控制器的路线。

+0

是'的http:// www.localhost.dev/somestring /测试-2014测试-153 /'的精确输入连杆? – 2014-09-30 06:54:29

回答

2

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

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

DEMO

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

+0

非常感谢您的回复,但我忘了提及,'somestring'部分,也必须检查,这是一个控制器路由。如果可以,请修改您的答案。 – MyMomSaysIamSpecial 2014-09-30 06:41:22

+1

这不检查是否有一些字符串ahead.Will失败的情况下'http:// www.localhost.dev/somestring/test-2014-test-153/dfsdfsdfsd' – vks 2014-09-30 06:42:05

+1

@ vks我回答OP不是你。如果我有点粗鲁,我无法帮助它,对此感到遗憾。但就OP的问题而言,他从未告诉过会有额外的字符串。 – 2014-09-30 06:49:36

1

也许这将满足您的需要:

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

这会工作,而且如果你在困惑tr Ÿ像 http://regexpal.com/

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

尝试this.This网站会给最后一个整数,不论什么ahead.Just抢capture.See演示。

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

+0

将'(\ d)'改为'(\ d +)' – 2014-09-30 06:49:03

+1

为什么要downvote ??????? – vks 2014-09-30 06:52:00

相关问题