JS利用正則表示式校驗手機號
JS利用正則表示式校驗手機號
緒
由於專案需求,需要在前端實現手機號碼的校驗。當然了,對於基本的格式校驗應該放在客戶端進行,而不需要再將待校驗的手機號傳送至服務端,在服務端完成校驗,然後將校驗結果返回給客戶端,客戶端根據返回的結果再進行進一步的處理。如此反而複雜化了處理過程。
其實,處於安全考慮,應該在服務端進行二次校驗。以下為在客戶端的JS中校驗手機號碼格式的程式碼:
原始碼
-
function
- {
- if(mobile.length== 0)
- {
-
alert(
'請輸入手機號碼!'
- document.form1.mobile.focus();
- return false;
- }
-
if
- {
- 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。
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net