JS驗證正數字,正則的一種正數規則1

JS中有一個驗證數字的方法,就是!isNAN。NAN是非數字,!在JS裏表示不是的意思,所以這個!isNAN就是判斷不是非數字,也就是是數字。
驗證某個字符串是否是數字格式是:
!isNaN(字符串)
經過測試,該方法可以識別整數浮點數等都可以,但是如下面的測試,009.225這種也會被識別爲是數字,但是一般小數不會這樣寫,這樣寫不太符合規則。

這裏試驗數字規則的一種,這裏分了兩種情況,用豎線分隔,匹配任意一種情況即可
第一種規則:
開頭是1-9任意一個,後面跟着0-9任意數量 (零個1個或多個),然後是一個小數點,後面 可以跟着0-9任意數量(零個1個或多個)。
這樣避免了009.225這種情況的出現,第一位必須不是零。
第二種規則:
開頭是一個0,然後是一個小數點,後面跟着0-9任意數量 (零個1個或多個)。
這種就是小於1的一些小數,他們可以以0開頭,緊跟着小數點。

PS補充:
1.由於點.在正則裏有含義,所以需要用轉義字符\轉義下。
2.爲了避免前後有其他不符合的內容,加開始和結尾。
3.關於開始結尾中間的 區域,()圓括號,由於裏面有兩種情況 ,用豎線分隔,圓括號可以括前面的整體,也可以括整個整體。該文測試後面有個關於或和圓括號的測試。

這裏面還有很多沒考慮到的情況,寫正則要考慮規則和所有不該匹配到的情況,之類可以判別一些情況,有些情況還不行,例如.後面是任意個數數字,但是點後面沒有數字這種情況不合理,所以應該修改一下,後面改成+號比較合適,小數點後至少有一位數字,此文只是測試用,後期博文(JS正則驗證數字格式2)會逐步修改。

測試代碼:

<a href="javascript:prn_p1()">點擊獲取</a><br>
<script language="javascript" type="text/javascript">   
        var LODOP; //聲明爲全局變量 
  function prn_p1(){
      //NAN是非數字,!isNAN用於判斷不是非數字,也就是數字。
      console.log("a,是否是數字:"+!isNaN("a"));
      console.log("12,是否是數字:"+!isNaN("12"));
      console.log("9.335,是否是數字:"+!isNaN("9.335"));      
      console.log("009.335,是否是數字:"+!isNaN("009.335"));
      console.log("a009.335,是否是數字:"+!isNaN("a009.335"));
      console.log("009..335,是否是數字:"+!isNaN("009..335"));
      console.log("----------分隔線1------"); 
      //以數字開頭,以數字結尾,任意位數的數字
      console.log("12,結果:"+/^[0-9]*$/.test("12"));
      console.log("9.335,結果:"+/^[0-9]*$/.test("9.335"));
      console.log("0012,結果:"+/^[0-9]*$/.test("0012"));
      console.log("0012,結果:"+/^\d*$/.test("0012")); //\d代表數字 
      console.log("----------分隔線2------"); 
      console.log("12,結果:"+/^[0-9]*\.?[0-9]*$/.test("12"));//沒有.的數字組合
      console.log("9.335,結果:"+/^[0-9]*\.?[0-9]*$/.test("9.335"));//有一個.的數字組合
      console.log("009.335,結果:"+/^[0-9]*\.?[0-9]*$/.test("009.335"));//有一個.的數字組合
      console.log("9..335,結果:"+/^[0-9]*\.?[0-9]*$/.test("9..335"));//有兩個點的數字組合
      console.log("----------分隔線3------"); 

      console.log("90345.300350,結果:"+/^[1-9][0-9]*\.?[0-9]*$/.test("90345.300350"));//非零開頭的小數
      console.log("009.3035,結果:"+/^[1-9][0-9]*\.?[0-9]*$/.test("009.3035"));//零在第一位的小數,第二位不是點
      console.log("90335,結果:"+/^[1-9][0-9]*\.?[0-9]*$/.test("90335"));//非零開頭的整數
      console.log("0.933050,結果:"+/^[0]\.[0-9]*$/.test("0.933050"));//零開頭的,第二位必須是點

      console.log("----測試----");
      console.log("0.933050,結果:"+/^([1-9][0-9]*\.?[0-9]*)|(0\.[0-9]*)$/.test("0.933050"));//零開頭的小數
      console.log("909.933050,結果:"+/^([1-9][0-9]*\.?[0-9]*)|(0\.[0-9]*)$/.test("909.933050"));//非零開頭的小數
      console.log("zx0.933050rt,結果:"+/^([1-9][0-9]*\.?[0-9]*)|(0\.[0-9]*)$/.test("zx0.933050rt"));//不是以數字開頭結尾
      console.log("0..978,結果:"+/^([1-9][0-9]*\.?[0-9]*)|(0\.[0-9]*)$/.test("0..978"));//有多個小數點的
   
      console.log("909.933050,結果:"+/^([1-9]\d*\.?\d*)|(0\.\d*)$/.test("909.933050"));//\d代替[0-9]
      console.log("0.933050,結果:"+/^([1-9]\d*\.?\d*)|(0\.\d*)$/.test("0.933050"));

      console.log("---測試開始結尾括號和或的位置---");
      console.log("0.933050,結果:"+/^([1-9]\d*\.?\d*|0\.\d*)$/.test("0.933050"));
      console.log("909.933050,結果:"+/^(0\.[0-9]*|[1-9][0-9]*\.?[0-9]*)$/.test("909.933050"));//非零開頭的小數
      console.log("結果是:"+/^[ab]|[cd]$/.test("b"));
      console.log("結果是:"+/^[ab]|[cd]$/.test("c"));//整體不加括號,裏面含有或
      console.log("結果是:"+/^([ab]|[cd])$/.test("c"));//整體加括號
  };
</script>

圖示:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章