1. 程式人生 > >JS利用正則表示式校驗手機號

JS利用正則表示式校驗手機號

JS利用正則表示式校驗手機號

        由於專案需求,需要在前端實現手機號碼的校驗。當然了,對於基本的格式校驗應該放在客戶端進行,而不需要再將待校驗的手機號傳送至服務端,在服務端完成校驗,然後將校驗結果返回給客戶端,客戶端根據返回的結果再進行進一步的處理。如此反而複雜化了處理過程。

        其實,處於安全考慮,應該在服務端進行二次校驗。以下為在客戶端的JS中校驗手機號碼格式的程式碼:

原始碼

  1.   function
    validatemobile(mobile)
  2.   {
  3.   if(mobile.length== 0)
  4.   {
  5.   alert( '請輸入手機號碼!'
    );
  6.   document.form1.mobile.focus();
  7.   return false;
  8.   }
  9.   if
    (mobile.length!= 11)
  10.   {
  11.   alert( '請輸入有效的手機號碼!');
  12.   document.form1.mobile.focus();
  13.   return false;
  14.   }
  15.    
  16.   var myreg = /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,2,3,5-9]))\\d{8}$/;
  17.   if(!myreg.test(mobile))
  18.   {
  19.   alert( '請輸入有效的手機號碼!');
  20.   document.form1.mobile.focus();
  21.   return false;
  22.   }
  23.   }

注:JS中正則表示式的注意事項

        在JS中//之間不需要轉義!

       常規的正則表示式的建立可用直接量,即斜槓 “/” 括起來的字元。但在要求引數變化的環境下,RegExp()建構函式是更好的選擇:

       var reg1 = /'\w+'/g;

       var reg2 = new RegExp('\'\\w+\'','g');

       對比兩種建立方式,RegExp中的第一個引數為要建立的正則字串,一方面注意,因為不是直接量的表示形式,因此不用斜槓“ / ”括起來了;而是字串中必須要對引號“ ‘ ”和轉義符號“ \ ”進行二次轉義。

       此外,無論是直接量還是RegExp()建構函式,都是生成了新的RegExp物件,並將其賦值給變數。

       在《Javascript權威指南》一書中講到,對於正則表示式的直接量,ECMAscript 3規定在每次它時都會返回同一個RegExp物件,因此用直接量建立的正則表示式的會共享一個例項。直到ECMAScript 5才規定每次返回不同的例項。

       各瀏覽器中,IE一直遵守 ECMAScript 5中的規定,其他瀏覽器的較老版本則遵循 ECMAScript 3的規定。因此在實際應用中,採取建構函式建立的方法比較安全,或者在使用lastIndex屬性時要記得歸0。

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net