一步一步寫正則 1 金額正規表示式

2021-09-01 18:52:37 字數 1042 閱讀 4578

用乙個正規表示式來檢查輸入的"錢"是否形式正確.

有四種錢的表示形式我們可以接受:"10000.00" 和 "10,000.00", 和沒有 "分" 的 "10000" 和 "10,000": 

^[1-9][0-9]*$

這表示任意乙個不以0開頭的數字,但是,這也意味著乙個字元"0"不通過,所以我們採用下面的形式: 

^(0|[1-9][0-9]*)$

乙個0或者乙個不以0開頭的數字.我們還可以允許開頭有乙個負號: 

^(0|-?[1-9][0-9]*)$

這表示乙個0或者乙個可能為負的開頭不為0的數字.ok,讓我們不要這麼嚴格了.讓使用者以0開頭好了.把負號的匹配也去掉,因為錢總不能是負的吧.下面我們要加的是說明可能的小數部分: 

^[0-9]+(.[0-9]+)?$

必須說明的是,小數點後面至少應該有1位數,所以"10."是不通過的,但是 "10" 和 "10.2" 是通過的. 

^[0-9]+(.[0-9])?$

這樣我們規定小數點後面必須有兩位,如果你認為太苛刻了,可以這樣: 

^[0-9]+(.[0-9])?$

這樣就允許使用者只寫一位小數.下面我們該考慮數字中的逗號了,我們可以這樣: 

^[0-9](,[0-9])*(.[0-9])?$

"1到3個數字,後面跟著任意個 逗號+3個數字 " 很簡單,不是嗎?但是讓我們使得逗號成為可選,而不是必須: 

^([0-9]+|[0-9](,[0-9])*)(.[0-9])?$

這就是最終結果了,別忘了"+"可以用"*"替代如果你覺得空字串也可以接受的話(奇怪,為什麼?)最後,別忘了在用函式時去掉去掉那個反斜槓,一般的錯誤都在這裡.ok了,當你的驗證完成後,用str_replace(",", "", $money)把逗號去掉,然後把它的型別設為double,這樣我們可以用它進行計算. 

一步一步學Ruby 九 Ruby正規表示式(上)

ruby的正規表示式以 作為構造方法。表示式返回乙個regexp的物件。一般規則 a 匹配字元a。匹配特殊字元?特殊字元包括 匹配任意字元,例如 a.匹配ab和ac。ab c 匹配ac和bc,之間代表範圍。例如 a z a za z0 9 a za z0 9 匹配不在該範圍內的字串。d 代表任意數字...

一步一步學Ruby 九 Ruby正規表示式(上)

ruby的正規表示式以 作為構造方法。表示式返回乙個regexp的物件。一般規則 a 匹配字元a。匹配特殊字元?特殊字元包括 匹配任意字元,例如 a.匹配ab和ac。ab c 匹配ac和bc,之間代表範圍。例如 a z a za z0 9 a za z0 9 匹配不在該範圍內的字串。d 代表任意數字...

一步一步學Ruby 九 Ruby正規表示式(上)

ruby的正規表示式以 作為構造方法。表示式返回乙個regexp的物件。一般規則 a 匹配字元a。匹配特殊字元?特殊字元包括 匹配任意字元,例如 a.匹配ab和ac。ab c 匹配ac和bc,之間代表範圍。例如 a z a za z0 9 a za z0 9 匹配不在該範圍內的字串。d 代表任意數字...