1. 程式人生 > >AngularJS進階(十三)JS利用正則表示式校驗手機號

AngularJS進階(十三)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. var myreg = /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,2,3,5-9]))\\d{8}$/
    ;
  16. if(!myreg.test(mobile))
  17. {
  18. alert('請輸入有效的手機號碼!');
  19. document.form1.mobile.focus();
  20. return false;
  21. }
  22. }

注: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。

這裡寫圖片描述