在ASP中用“Regex對象”來校正資料的合法性

來源:互聯網
上載者:User
對象|資料|正則 在ASP中用“Regex對象”來校正資料的合法性
(作者:蘇紅超 2000年03月27日 13:35)


  我們在製作網站的時候,尤其是各種電子商務網站,首先都會讓使用者填寫一些表格來擷取註冊使用者的各種資訊,因為使用者有可能輸入各式各樣的資訊,而有些不符合要求的資料會給我們的後端ASP處理常式帶來不必要的麻煩,甚至導致網站出現一些安全問題。因此我們在將這些資訊儲存到網站的資料庫之前,要對這些使用者所輸入的資訊進行資料的合法性校正,以便後面的程式可以安全順利的執行。所以我們一般會在後端編寫一個ASP的校正程式來分析使用者輸入的資料是否是合法的。

  或許有人會問了,使用運行在用戶端的JavaScript不是可以更好更快的來校正使用者的資料嗎?的確,這樣在大多的情況下是可以的,為什麼是大多情況下呢?因為你編寫的JavaScript不一定可以完全正常的同時運行在IE以及Netscape上面,因為微軟的Jscript並不全和JavaScript相同,再加上還有一些瀏覽器不一定和微軟以及Netscape相容的很好,所以很有可能在用戶端的Javascript不會精確的校正使用者輸入的各種資料,而ASP程式是運行在伺服器端的,只是和你的伺服器的環境有關,無論用戶端是什麼瀏覽器,對於你的ASP程式來說都是沒有分別的,所以選擇使用後端的ASP程式來進行資料合法性的校正是一個好的選擇。

  在使用ASP來進行後端的資料合法性校正的時候,有些人為滿足不同環境下面的資料校正,編寫了很多的函數來實現,比如,我們想要校正使用者輸入的URL 地址是否合法,是可以自己編寫一段代碼來逐個逐個字元的分析使用者輸入的資訊,要分析的資訊量小了,那還比較好辦,若是分析的條件千變萬化,那可就慘了,不但要編寫很長很繁瑣的代碼,而且啟動並執行效率極其低下,有沒有好的解決辦法呢?有,那就是VBScritp5.0提供的“Regex”對象,只要你的伺服器安裝了IE5.x,就會帶VBScript5.0。其實,“Regex”原本是Unix下面的專利,尤其是在Perl語言中使用的最為廣泛,正是由於“Regex”的強大功能,才使得微軟慢慢將Regex對象移植到了視窗系統上面,利用

“Regex”對象,我們就可以非常方便的對各種資料進行合法性的校正了。

  首先,讓我們來瞭解一下究竟什麼是VBScript的“Regex”對象,我們先來看一段程式:

Function CheckExp(patrn, strng)

Dim regEx, Match   ' 建立變數。

Set regEx = New RegExp ' 建立Regex。

regEx.Pattern = patrn ' 設定模式。

regEx.IgnoreCase = true ' 設定是否區分字元大小寫。

regEx.Global = True ' 設定全域可用性。

Matches = regEx.test(strng)     ' 執行搜尋。

CheckExp = matches

End Function

  在這段程式程式中,我們看到可以使用“New RegExp”來得到一個Regex對象,然後對這個對象進行正則匹配模板的賦值,也就是告訴Regex對象,你想要匹配一個什麼樣子的模板,然後使用方法Test來檢測待處理的資料究竟和我們給出的模版是否相匹配,如果不匹配,那就表明待處理的資料不是合法的資料,從而也就實現了資料合法性的校正,我們可以看出,使用一個設計合理的匹配模板,我們可以輕鬆的校正一批格式類似的資料資訊。

  當然,VBScript5.0中的“Regex”對象還有很多的其他的方法和屬性,比如方法Replace(),利用他我們就可以很快的實現現在網上很時髦的UBB風格的論壇以及BBS,這不在我們討論範圍之內,以後再加以論述,我們現在就看看在資料校正方面Regex對象常用的方法和屬性:



常用方法: Execute 方法

描述:對指定的字串執行Regex搜尋。

文法:object.Execute(string)  Execute 方法的文法包括以下幾個部分:

object:必需的。總是一個 RegExp 對象的名稱。

string:必需的。要在其上執行Regex的文本字串。

說明:Regex搜尋的設計模式是通過 RegExp 對象的 Pattern 來設定的。Execute 方法返回一個

Matches 集合,其中包含了在 string 中找到的每一個匹配的 Match 對象。如果未找到匹配,Execute 將返回空的 Matches 集合。

Test方法

描述:對指定的字串執行一個Regex搜尋,並返回一個 Boolean 值指示是否找到匹配的模式。

文法:object.Test(string)

Test 方法的文法包括以下幾個部分:

object:必需的。總是一個 RegExp 對象的名稱。

string:必需的。要執行Regex搜尋的文本字串。



說明:Regex搜尋的實際模式是通過RegExp對象的Pattern屬性來設定的。RegExp.Global屬性對Test方法沒有影響。如果找到了匹配的模式,Test方法返回True;否則返回False。



常用屬性: Global屬性

描述:設定或返回一個 Boolean 值,該值指明在整個搜尋字串時模式是全部匹配還是只匹配第一個。

文法:object.Global [= True | False ]

object 參數總是 RegExp 對象。如果搜尋應用於整個字串,Global 屬性的值為 True,否則其值為 False。預設的設定為 True。

IgnoreCase屬性

描述:設定或返回一個Boolean值,指明模式搜尋是否區分大小寫。

文法:object.IgnoreCase [= True | False ]

object 參數總是一個 RegExp 對象。如果搜尋是區分大小寫,則 IgnoreCase 屬性為 False;否則為 True。預設值為 True。

Pattern屬性

描述:設定或返回被搜尋的Regex模式。 這是一個最重要的屬性,我們主要是設定這個屬性來實現資料校正的。

文法:object.Pattern [= "searchstring"]

Pattern 屬性的文法包含以下幾個部分:

object:必需的。總是一個 RegExp 物件變數。

searchstring:可選的。被搜尋的正則字串運算式。它可能包含設定部分表格中的各種Regex字元。

設定:在書寫Regex的模式時使用了特殊的字元和序列。下表描述了可以使用的字元和序列,並給出了執行個體。



字元描述: \:將下一個字元標記為特殊字元或字面值。例如"n"與字元"n"匹配。"\n"與分行符號匹配。序列"\\"與"\"匹配,"\("與"("匹配。

^ :匹配輸入的開始位置。

$ :匹配輸入的結尾。

* :匹配前一個字元零次或幾次。例如,"zo*"可以匹配"z"、"zoo"。

+ :匹配前一個字元一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。

? :匹配前一個字元零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。

.:匹配分行符號以外的任何字元。

(pattern) 與模式比對並記住匹配。匹配的子字串可以從作為結果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括弧字元(和 ),可使用"\(" 或 "\)"。

x|y:匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。

{n}:n 為非負的整數。匹配恰好n次。例如,"o{2}" 不能與 "Bob 中的 "o" 匹配,但是可以與"foooood"中的前兩個o匹配。

{n,} :n 為非負的整數。匹配至少n次。例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等價於"o+"。"o{0,}"等價於"o*"。

{n,m} :m 和 n 為非負的整數。匹配至少 n 次,至多 m 次。例如,"o{1,3}" 匹配 "fooooood"中前三個o。"o{0,1}"等價於"o?"。

[xyz] :一個字元集。與括弧中字元的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。

[^xyz] :一個否定的字元集。匹配不在此括弧中的任何字元。例如,&qu



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。