正規表示式的應用
瞭解瞭如何定義一個正規表示式,那麼在實際的工作應用中,經常使用正規表示式驗證哪些內容呢?針對新使用者註冊頁面,需要驗證的內容有使用者名稱、密碼、電子郵箱、手機號碼、身份證號碼、生日、郵政編碼、固定電話等,主要是檢查輸入的內容是否是中文字元、英文字母、數字、下劃線等,以及對輸入內容的長度驗證。例如,使用者名稱是否只有中文字元、英文字母、數字及下劃線,手機號碼是否由數字組成,身份證號碼的長度是否是 15位或18位,以及是否全由數字組成。
上面我們看到的是網頁中經常用到的驗證內容,那麼如何編寫正規表示式來實現呢?例如,郵政編碼、手機號碼的驗證,中國的郵政編碼都是六位,而手機號碼都是 11位,並且第一位都是1,因此對郵政編碼和手機號碼進行驗證的正規表示式如下。
var regCode=/^\d{6}$//;
var regMobile=/^l\d{10}$/;
驗證郵政編碼和手機號碼的程式碼如示例 9所示。
【示例】 驗證郵編和手機號碼
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>驗證郵編和手機號碼</title>
<style type="text/css">
body {line-height: 25px; }
input {width: 120px; height: 16px; }
div {color: #F00; font-size: 12px; display: inline-block;padding-left: 5px;}
ul, li {list-style: none; }
</style>
</head>
<body>
<ul>
<li>郵政編碼:<input id="code" type="text" />
<div id="divCode"></div>
</li>
<li>手機號碼:<input id="mobile" type="text" />
<div id="divMobile"></div>
</li>
</ul>
<script src="js/jquery-1.12.4.js"></script>
<script>
$(document).ready(function() {
$("#code").blur(function() {
var code = $(this).val();
var $codeId = $("#divCode");
var regCode = /^\d{6}$/;
if(regCode.test(code) == false) {
$codeId.html("郵政編碼不正確,請重新輸入");
return false;
}
$codeId.html("");
return true;
});
$("#mobile").blur(function() {
var mobile = $(this).val();
var $mobileId = $("#divMobile");
var regMobile = /^1\d{10}$/;
if(regMobile.test(mobile) == false) {
$mobileId.html("手機號碼不正確,請重新輸入");
return false;
}
$mobileId.html("");
return true;
});
});
</script>
</body>
</html>
在瀏覽器中執行示例,如果在郵政編碼輸入框中輸入的不全是數字或長度不是六位,均提示錯誤;如果在手機號碼輸入框中輸入的不全是數字,或第一位不是 1,或長度不是11位,均提示錯誤。
以上使用正規表示式驗證了手機號碼和郵政編碼,但是這只是規定了字串的長度及字串中某一位上的數字的範圍,如果要對年齡進行驗證,則年齡必須為 0~120,該如何編寫正規表示式呢?
思路分析
(1) 10-99這個範圍都是兩位數,十位是1-9,個位是0-9,正規表示式為[1-9]\d。
(2) 0~9這個範圍是一位數,正規表示式為\d。
(3) 100~119這個範圍是三位數,百位是1,十位是0~1,個位是0~9,正規表示式為1[0-1]\d。
(4) 根據以上可知,所有年齡的個位都是0~9,當百位是1時,十位是0~1,當年齡為兩位數時十位是1~9,因此0~119這個範圍的正規表示式為(1[0-1]|[1-9])?\d。
(5) 年齡為120是單獨的一種情況,需要單獨列出來。
根據思路分析, ^和$限制了匹配單獨的一行,使用正規表示式驗證年齡的完整程式碼如示例10所示。
【示例】 驗證年齡
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>驗證年齡</title>
<style type="text/css">
span{color: #ff0000; padding-left: 5px; font-size: 12px;}
</style>
</head>
<body>
年齡: <input id="age" type="text"/><span id="divAge"></span>
<script src="js/jquery-1.12.4.js"></script>
<script>
$(document).ready(function(){
$("#age").blur(function(){
var age = $(this).val();
var $ageId = $("#divAge");
var regAge = /^120$|^((1[0-1]|[1-9])?\d)$/m;
if (regAge.test(age) == false) {
$ageId.html("年齡不正確,請重新輸入");
return false;
}
$ageId.html("");
return true;
});
});
</script>
</body>
</html>
上述校驗年齡的正規表示式,對於 "01"、“012”、“0012"這樣的數字,校驗結果是不合法的,這樣的結果對使用者來說似乎有些苛刻,畢竟在正常年齡前多個0,仍然是個正確的年齡數字,因此可以進一步修改前面的正規表示式,允許開頭有任意個0,可以表示為”[0]*",完整驗證年齡的正規表示式則變成"^[0]*(120|((1[0-1]|[1-9])?\d))$ "。
從前面的示例可以看出,結果要匹配得越精確,則編寫的正規表示式就越複雜。編寫一個複雜的表示式,應該先分解問題,從簡單的表示式開始,然後組合成複雜的表示式。
到這裡為止,我們學習了什麼是正規表示式及如何定義一個正規表示式,並且使用正規表示式進行了簡單的驗證。下面我們綜合運用以上所學的知識,驗證一個使用者的註冊頁面,學習並鞏固複雜正規表示式的驗證技術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2914955/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- “正規表示式”應當稱為“規則表示式”
- 20個Python 正規表示式應用與技巧Python
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 正規表示式的應用實現郵箱輸入
- 正規表示式如何在PHP裡靈活的應用PHP
- 正規表示式
- 正規表示式.
- 正規表示式理解及簡單應用舉例
- python就業班----正規表示式及re應用Python就業
- 20個實用正規表示式
- Linux 的正規表示式Linux
- JS常用正規表示式及驗證時間的正規表示式JS
- php –正規表示式PHP
- 【Linux】正規表示式Linux
- 【JavaScript】正規表示式JavaScript
- URL正規表示式
- 正規表示式 split()
- 初探正規表示式
- 正規表示式 test()
- 正規表示式(?!)作用
- 正規表示式 {n,}
- SQL正規表示式SQL
- 正規表示式(java)Java
- Python——正規表示式Python
- PHP正規表示式PHP
- 正規表示式概括
- javascript正規表示式JavaScript
- java正規表示式Java
- Shell正規表示式
- 常用正規表示式
- 正規表示式合集
- python正規表示式Python
- 【java】正規表示式Java
- MySQL正規表示式MySql
- JavaScript 正規表示式JavaScript
- 正規表示式 教程
- Python 正規表示式Python
- 正規表示式(一)