javascriptRegex小數類型
如果想要閱讀和理解一下的,可以讀一下。如果只需要結果,直接跳到本文最後。
曾經有需求用javascriptRegex匹配小數類型,後來自己之前寫的也是不能完全正確識別。
後來在網上找了許多,甚至包括一些老外的純英文論壇什麼的,發現都是錯的,都不夠全面。
常見錯誤:
1. /^-?\d+\.\d+$/ http://blog.csdn.net/xxd851116/article/details/4352011
隨便一看就知道,如果前面帶+則錯誤,如果沒有小數點則錯誤,如果00.123也不錯報等等
2./^[0-9]*[.][0-9]+$/ http://social.msdn.microsoft.com/Forums/en-US/1ffd9265-eafa-4897-b803-39194f35df5d/regular-expression-for-a-float-in-javascript?forum=jscript
與上一個差不多
3. /^\d*+(\.\d+)?$/與上一個同一個頁面
看起來有水平了許多,比如考慮到小數點及小數點後的內容可有可沒有(即整數也可以,不僅僅是純小數)
但是小數點前,00.123 也是可以的
不行。
4. /^[+-]?\d+(\.\d+)?$/
也是更好了,比如考慮到了前面的加號或減號,等,但是同樣的小數點前,00.123 也是可以的
不找更多了,大概也就是這樣。
-----------
下面是我測試多次的一個寫法:
var regExp = /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g;var b = regExp.test(a);alert(b);
解釋:
^$分別匹配字串的首尾
[+-]? 表示字串開頭可以有 +或-或沒有符號,且有的話只能有一個
0|[1-9]\d* 這是小數點前的整數部分,表示可以為 (一個0 ) 或者 (為一個第一位不為0的整數,但第一位以後可以為0)
(\.\d+)? 是指小數點及小數點後面部分,不出現或出現一次
g全部匹配,(好像不是必需的)
因此,完美匹配小數類型。