金額Regex

來源:互聯網
上載者:User

標籤:

   用一個Regex來檢查輸入的"錢"是否形式正確.
    有四種錢的表示形式我們可以接受:"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]{2})?$ 
  這樣我們規定小數點後面必須有兩位,如果你認為太苛刻了,可以這樣: 
  ^[0-9]+(.[0-9]{1,2})?$ 
  這樣就允許使用者唯寫一位小數.下面我們該考慮數字中的逗號了,我們可以這樣: 
  ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ 
  "1到3個數字,後面跟著任意個 逗號+3個數字 " 很簡單,不是嗎?但是讓我們使得逗號成為可選,而不是必須: 
  ^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$ 
  這就是最終結果了,別忘了"+"可以用"*"替代如果你覺得Null 字元串也可以接受的話(奇怪,為什麼?)最後,別忘了在用函數時去掉去掉那個反斜線,一般的錯誤都在這裡.OK了,當你的驗證完成後,用str_replace(",", "", $money)把逗號去掉,然後把它的類型設為double,這樣我們可以用它進行計算. 

金額Regex

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.