假設你要閱讀並了解什么,能閱讀。假設只需要結果,直接跳轉到這篇文章的結尾。
有使用前需求javascript正則表達式匹配小數類型,后來,他們已經寫是不完全正確的識別。
后來在網上找了很多,甚至包含一些老外的純英文論壇什么的。發現都是錯的。都不夠全面。
常見錯誤:
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所有匹配,(好像沒必要的)
因此。完美匹配小數類型。
版權聲明:本文博客原創文章,博客,未經同意,不得轉載。