林海菁

【摘要】在Web程序中,常常需要使用JavaScript腳本進行用戶輸入校驗,避免非法數據傳遞到服務端。正則表達式是對字符串操作的一種邏輯公式,用事先定義好的一些特定字符及其組合,組成一個“規則字符串”,用來表達對字符串的一種過濾邏輯。采用正則表達式可以輕松地解決Web程序客戶端用戶輸入校驗的問題。
【關鍵詞】正則表達式;JavaScript腳本;用戶輸入校驗
一、引言
在Web程序中,為了實現網頁上的動態功能,需要使用腳本語言進行編程處理。通過腳本,可以動態控制網頁的外觀和內容,可以控制瀏覽器的行為,可以實現用戶交互操作,可以讀寫部分客戶端信息,等等。其中驗證用戶輸入表單的信息這一功能在大大小小的Web程序中普遍存在,是所有Web程序開發者都要解決的問題。本文介紹了如何利用正則表達式完美實現客戶端的用戶輸入校驗。由于客戶端腳本語言種類比較多,本文就以比較流行的JavaScript為例進行說明。
二、創建正則表達式
正則表達式,又稱正規表示法、常規表示法,是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。正則表達式具有極強的靈活性、邏輯性和功能性,可以迅速地用極簡單的方式達到字符串的復雜控制,但是對于剛接觸的人來說,它又顯得非常晦澀難懂。
在JavaScript中,正則表達式由RegExp對象表示。可以使用RegExp( )構造函數創建RegExp對象,其語法格式如下所示:
var 對象變量名=new RegExp(“正則表達式模式字符串”)
JavaScript還提供正則表達式直接量這種語法從而更方便地創建JavaScript正則表達式,它用包含在一對斜杠(/)之間的字符來表示正則表達式,這是比較常見的創建正則表達式的方法,其語法格式如下所示:
var 對象變量名=/正則表達式模式字符串/
無論采取哪種形式,創建一個RegExp對象都是比較容易的。比較晦澀難懂的地方在于正則表達式的語法,即如何描述字符的模式。
三、正則表達式語法
一個正則表達式是由普通字符(如數字、字母)以及特殊字符(稱為元字符)組成的字符模式。正則表達式作為一個模板,將某個字符模式與給定的字符串進行匹配。
正則表達式中使用的元字符比較多,限于篇幅,本文只給出一些常用的操作符進行說明,其它未作說明的可以觸類旁通。
四、運用正則表達式的方法
在JavaScript腳本中,運用正則表達式檢查字符串信息是否匹配有以下兩種方法:
1、調用正則表達式對象的常用方法
(1)exec(string)方法:該方法對string進行匹配檢查,并返回匹配結果。符合將返回結果“true”,否則返回結果“false”。
(2)test(string)方法:該方法用于測試string是否含有匹配結果,如果包含將返回結果“true”,否則返回結果“false”。
2、調用內置對象String的正則表達式方法
(1)match(pattern)方法:該方法根據正則表達式字符模式pattern對String對象的字符串進行正則匹配,如果匹配到,返回匹配結果,如果匹配不到則返回null。
(2)search(pattern)方法:該方法根據pattern對字符串進行正則匹配,如果匹配到一個結果,則返回它的索引數,否則返回-1。
(3)replace(pattern, replacement)方法:該方法根據pattern對字符串進行正則匹配,將匹配結果替換為replacement。
(4)split(pattern)方法:該方法根據pattern對字符串進行正則分割,返回一個分割的數組。
五、常用正則表達式
很多通用的用戶輸入信息在多數Web程序中都會出現,如身份證號、郵箱地址、電話號碼等,開發者可以將這些信息的檢查定義成常用的函數,寫在一個js文檔中,供各Web程序隨時調用。以下列舉出一些較復雜的但常用的正則表達式供參考:
1、檢查身份證號
function checkIdCard (s) {
//身份證正則表達式(15位)
var rs1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份證正則表達式(18位)
Var rs2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
return rs1.test(s) || rs2.test(s);
}
2、檢查字符串中是否含有中文
function hasChinese (s) {
var rs=/[\u4E00-\u9FA5]/g;
return rs.test(s);
}
【參考文獻】
[1]Nicholas C.Zakas.JavaScript高級程序設計[M].人民郵電出版社,2012.
[2]David Flanagan.JavaScript權威指南[M].清華大學出版社,2007.