2012-06-13 17 views
-2

我想知道如何創建一個正則表達式來匹配模式3,231或3,231,201在PHP? 由於正則表達式的數字與delimeters

+0

@Esailija,([0-9] * k?),即regexp是118k的數字或118,但我希望它覆蓋118,201和118,201,100的可能性,例如 – Alon

+0

您是否想要匹配或拒絕錯誤分組的數字,如1234,5678或1,2,345?此外,其他分隔符(請記住,在歐洲,逗號用作小數點分隔符)或其他分組約定,例如[在印度](http://en.wikipedia.org/wiki/South_Asian_numbering_system)? –

回答

1
/([0-9,]+k?)/ 

上述正則表達式匹配號碼,逗號,與端部的可選數「k」。

+0

謝謝,作爲一個魅力 – Alon

+0

當然,這也匹配',,, k'或'0,0,0,0' ... –

0

那麼這很容易,

/^[0-9,]+$/ 

這一點也適用(例如)1231,1231,1312,12312

1

圖案看起來是這樣的:

/([0-9]+)(,[0-9]{3})*/ 

這將允許這樣的事情:

123 
123,123 
123,123,123 
1,123 
123456 

但不是:

123, 
123,1 
123,12 
123,1234 

您可以修改行爲,例如通過將{3}更改爲+{1,4}(1至4)或{3,}(3個或更多),在逗號後允許更多/更少的數字。

+1

此外,如果你只是想本地化數字,你可能想看看:'number_format()':http://php.net/manual/en/function.number-format.php – dbrumann