2013-05-30 152 views
-5

我需要從像這樣的url獲得id:Id是正整數。 我嘗試用正則表達式做到這一點:Javascript的正則表達式

url = 'http://127.0.0.1:8000/api/v1/customer/3/' 
url.match('///d/') 

但這種模式是行不通的。 請幫幫我。

+2

'\ d'是一個數字,而不是'/ d'。 – geoffspear

+0

@WalterTross我知道哪一個看起來像RTFM,但是因爲我看到你不會讀它,因爲你的回答也是錯誤的 – Denis

+1

@Denis:Wooble說的絕對正確,'\ d'匹配任何數字。另一方面,你的回答非常粗魯。 –

回答

2

這正則表達式得到你的URL的末尾號:/ 3/- > 3

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

url ='http://127.0.0.1:8000/api/v1/customer/3/'; url.match('/ \ /([0-9] +)\/$ /');返回null – Denis

+3

@Denis:你誤會了。開始和結尾處的'/'用於在代碼中放置文字正則表達式。你不要把它放在引號中。 'url ='127.0.0.1:8000/api/v1/customer/3/'; url.match(/ \ /([0-9] +)\/$ /);'returns'[「/ 3 /」,「3」]' –

+0

很多thx,lal,我開始發瘋,因爲我所有的正則表達式不想工作)))javascript ... – Denis

3

看起來這將是足夠的:

var url = 'http://127.0.0.1:8000/api/v1/customer/3/'; 
var id; 
url = url.split('/'); 
for (var x = 0; x < url.length; x++) { 
    if (url[x] === 'customer') { 
     id = parseInt(url[x + 1], 10); 
     break; 
    } 
} 
+0

看起來很奇怪,我需要用regexp更實際的解決方案 – Denis

+0

@Denis:這有什麼奇怪的?看起來直截了當的我。 –

+0

我只需要兩個斜槓之間的正整數 – Denis

3

假設你總是希望在字符串末尾的最後一個數字,我會去這樣的:

(\d)(?:\/)$ 

here

或者,如果你想尾隨/可選的,你可以這樣做:

(\d)(?:\/)?$ 

here

+0

所有這些工作人員都返回null它只是不起作用 – Denis

+1

@Denis:在英語中,我們說「謝謝你」。但它確實有效。正如Friederike S上面所指出的那樣,你的問題在於,你一直把正則表達式看作是字符串。他們不是。他們不需要(並且不應該)被包含在引號中。你需要'url.match(/(\ d)(?:\ /)$ /)'。 –

+0

好吧,我沒有理解你解決的錯誤,我的工作也很好,我被javascript搞糊塗了,它可能傳遞給函數,我甚至不知道這是一個叫做...純文本沒有引號。 – Denis