2011-03-28 53 views
1

我發現這個正則表達式可以找到1.00或1.00美元的價格。但對於長度爲3位或更長的值(如'365'),它也會返回true。字符串中的正則表達式價格

/([\d,]+.\d+)+/i 

反正是有修改此正則表達式來進行的所有類型的浮點,但不包括連續3個數字,如「365」或「1000」的價格,等:

1.00 $ 1.00的返回true

+0

限制正則表達式部分的擴展,我認爲你沒有正確地從哪裏找到它複製的正則表達式。它有太明顯的錯誤。正如下面的答案指出的那樣,應該逃避'.'。另外,如果你只是匹配數字和符號,大小寫不應該重要,所以你的'我'最後是沒用的。你應該檢查你的正則表達式,並首先修正它。 – sawa 2011-03-29 01:45:50

回答

2

這應找到所有的單位數字,帶小數點。所以說: ''

1.xxx 
2.xxx 
... 
9.xxx 

但不

365365.000

/(\d\.\d+)/i 
+0

@ miky-dinescu那個正則表達式仍然返回像'365'這樣的值。 – oprogfrogo 2011-03-28 22:26:50

+0

@ user450837 - 我現在修好了..以前我有兩個錯誤。那是你在找什麼? – 2011-03-28 22:28:04

+0

@ miky-dinescu這就是我正在尋找的!謝謝。 – oprogfrogo 2011-03-28 22:41:56

1

如果我沒有記錯的,相反,你需要使用 '\'。你有什麼可以匹配任何東西,而第二個匹配字符'。'。 。

/([\d,]+\.\d+)/ 
0

.匹配一切,所以,逃吧:

/([\d,]+\.\d+)+/i 

我甚至做到這一點:

/\d{1,3}(,?\d{3})*\.\d+)+/i 
0

如果您正在尋找在某一段文字,匹配價格,如:

1.00是有效的價格,所以是1.50美元和10.12美元,但不是$ 200.90或 £1000.10

那麼這將返回1.00$1.50$10.12火柴。

(^|\W{1})\d{1,2}\.\d{2}

0

您可以通過使用{a,b}

\d{1,2}\.\d{2}$