正則表達式-限定位數的正數


今天項目上碰到一個正則表達式的需求,需要限定整數位數為不超過7位的正數,可能包含一位小數位或者只能是正數,正則表達式的寫法最重要的是思路的實現,在網上並沒有找到很好的解決辦法,首先是正數必須大於0,其次整數位也限定了7位,小數位如果有的話也只能一位,碰到這樣的正則表達式最好是拆解成三部分:

1、整數位為7位+小數位為1位的驗證 (^[0-9]{1,7}\.([0-9]{1})$) 2、整數為7位不包含小數位的非負數 (^[0-9]{1,7}$) 3、大於0的正數 (^\d*[1-9]\d*$)

拆解后可以看到,3式需要和2式進行邏輯與,合並后再與1進行邏輯或運算,故可以推到出:

(?=^\d*[1-9]\d*$)(^[0-9]{1,7}$)|(^[0-9]{1,7}\.([0-9]{1})$)

其中:“|”為邏輯或,而邏輯與可以寫成(?=A)(B),A和B分別為兩個正則表達式。

寫個性化的正則表達式需要有一個較好的思路,如何拆解和組合很重要,不太建議采用邏輯非,實現起來不易,邏輯與和邏輯或是比較好的實現方式。

可參考一篇博客:正則表達式全部符號解釋


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM