2012-11-16 23 views
0

我知道那裏有一百萬個正則表達式問題,我向你保證我讀了一百萬個這樣的問題!這只是那些不適合我的事情之一。我試圖提取價格編號(十進制與否)和項目的名稱正則表達式工作不正常,當它不應該返回時返回null

輸入(價格數和< BR />之間的所有內容):

var content = "$22 M Uniform <br/>" 

或像這樣

var content = "$39 Day/Evening Class Tuition <br/>" 

var content = "$12.8 Weekend Class Payment <br/>" 

我的代碼:

var itemprice = content.match(/(\d+)(d*(\.\d{1,2}))/); 
    var itemname = content.match(/(\s)(.*?)</); 

我的問題:

itemname的作品,因爲它應該和我不過數尋,似乎當我調試它itemprice設置爲null在瀏覽器中無法正常工作返回正常。這很奇怪,因爲當我在這裏嘗試代碼http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_regexp_i它工作得很好,提取數字。

對於網站我的代碼如下所示:

var str = "$39.56 Day/Evening Class Tuition <br>"; 
var patt1 =/(\d+)(d*(\.\d{1,2}))/; 
var matches = str.match(patt1) 
alert(matches[0]); 
+0

可能是'd *'。這意味着*零個或多個「d」字符* – Phil

回答

2

可選點簡單的十進制正則表達式是這裏

/\d+(\.\d{1,2})?/ 

演示 - http://jsfiddle.net/JXdbg/2/

對於美元符號貨幣檢測,我將前綴爲$

/\$\d+(\.\d{1,2})?/ 
+0

仍然是相同的錯誤,即時調試現在 – Osman

+0

好吧,我一直在搞亂它,它只是工作,這是我措辭的代碼,而不是正則表達式,怪怪的.. ..但謝謝! – Osman