2014-09-30 95 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

相關問題