AngularJS進階(十三)JS利用正則表示式校驗手機號
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
JS利用正則表示式校驗手機號
緒
由於專案需求,需要在前端實現手機號碼的校驗。當然了,對於基本的格式校驗應該放在客戶端進行,而不需要再將待校驗的手機號傳送至服務端,在服務端完成校驗,然後將校驗結果返回給客戶端,客戶端根據返回的結果再進行進一步的處理。如此反而複雜化了處理過程。
其實,處於安全考慮,應該在服務端進行二次校驗。以下為在客戶端的JS中校驗手機號碼格式的程式碼:
原始碼
- function validatemobile(mobile)
- {
- if(mobile.length==0
) - {
- alert('請輸入手機號碼!');
- document.form1.mobile.focus();
- return false;
- }
- if(mobile.length!=11)
- {
- alert('請輸入有效的手機號碼!');
- document.form1.mobile.focus();
- return false;
- }
- var myreg = /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,2,3,5-9]))\\d{8}$/
; - if(!myreg.test(mobile))
- {
- alert('請輸入有效的手機號碼!');
- document.form1.mobile.focus();
- return false;
- }
- }
注: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。