版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第7章數(shù)據(jù)驗(yàn)證控件
本講教學(xué)內(nèi)容ASP.NET中數(shù)據(jù)驗(yàn)證控件的工作原理必填驗(yàn)證控件的使用比較驗(yàn)證控件的使用范圍驗(yàn)證控件的使用規(guī)則驗(yàn)證控件的使用用戶驗(yàn)證控件的使用何為Web頁面驗(yàn)證?檢查用戶輸入信息的有效性,向用戶提示輸入錯(cuò)誤信息,從而確定不同的操作流程。Web頁面驗(yàn)證的重要性:是保證Web應(yīng)用安全性的重要途徑和手段。.NET提供的幫助:提供了功能強(qiáng)大、方式多樣、層次分明、使用簡單的Web頁面驗(yàn)證能力,其中驗(yàn)證控件是核心內(nèi)容。7.1數(shù)據(jù)有效性驗(yàn)證機(jī)制簡介何為驗(yàn)證控件?是ASP.NET提供的、用來實(shí)現(xiàn)不同驗(yàn)證目的的控件;可以和Web頁面中的任意控件一起使用,并為其提供一種驗(yàn)證機(jī)制。驗(yàn)證類型:必須驗(yàn)證、比較驗(yàn)證、范圍驗(yàn)證、模式驗(yàn)證、自定義驗(yàn)證說明:
1、主要是為輸入控件提供驗(yàn)證(服務(wù)器控件);
2、在執(zhí)行事件之前驗(yàn)證;
3、驗(yàn)證控件可以結(jié)合使用;7.1數(shù)據(jù)有效性驗(yàn)證機(jī)制簡介2.ASP.NET提供的數(shù)據(jù)驗(yàn)證控件傳統(tǒng)的動(dòng)態(tài)Web技術(shù)中,如果需要驗(yàn)證某個(gè)數(shù)據(jù)是否有效,開發(fā)人員必須動(dòng)手編寫一段代碼來進(jìn)行判斷。通常需要判斷的條件很多,代碼會(huì)非常冗長。ASP.NET中提供了一系列容易使用且功能強(qiáng)大的驗(yàn)證控件,可以按預(yù)定義的標(biāo)準(zhǔn)檢查用戶的輸入是否合法。驗(yàn)證服務(wù)器控件是一個(gè)控件集合,這些控件允許驗(yàn)證關(guān)聯(lián)的輸入服務(wù)器控件,并在驗(yàn)證失敗時(shí)顯示自定義消息。每個(gè)驗(yàn)證控件執(zhí)行特定類型的驗(yàn)證。可通過使用比較驗(yàn)證控件CompareValidator和范圍驗(yàn)證控件RangeValidator分別針對(duì)某個(gè)特定值或值范圍進(jìn)行驗(yàn)證。甚至還可通過使用用戶驗(yàn)證控件CustomValidator定義自己的驗(yàn)證判據(jù)。使用驗(yàn)證匯總控件ValidationSummary,還可以用于顯示頁上所有驗(yàn)證控件的結(jié)果摘要。7.1數(shù)據(jù)有效性驗(yàn)證機(jī)制簡介2.ASP.NET提供的數(shù)據(jù)驗(yàn)證控件控件名稱說明RequiredFieldValidator確保用戶不跳過某些必填的輸入項(xiàng)CompareValidator使用比較運(yùn)算符將用戶的輸入與另一控件的常數(shù)值或?qū)傩灾颠M(jìn)行比較RangeValidator檢查用戶的輸入是否在指定的上下邊界之間,可以檢查數(shù)字、字母或日期對(duì)內(nèi)的范圍。RegularExpressionValidator檢查輸入是否與正則表達(dá)式定義的模式匹配。該驗(yàn)證類型允許檢查可預(yù)知的字符序列CustomValidator使用您自己編寫的驗(yàn)證邏輯檢查用戶的輸入,該驗(yàn)證類型允許檢查運(yùn)行時(shí)導(dǎo)出的值ValidationSummary以摘要的形式顯示頁上所有驗(yàn)證程序的驗(yàn)證錯(cuò)誤驗(yàn)證時(shí)機(jī):
1、通常在處理Click事件時(shí)調(diào)用驗(yàn)證;
2、頁面處理期間調(diào)用控件的Validate方法,實(shí)現(xiàn)“及時(shí)驗(yàn)證”。驗(yàn)證多個(gè)條件:
1、每個(gè)輸入控件可以執(zhí)行一個(gè)以上的驗(yàn)證檢查;
2、通過邏輯“與”對(duì)每個(gè)輸入控件執(zhí)行多項(xiàng)驗(yàn)證檢查;
3、通過邏輯“或”對(duì)每個(gè)輸入控件執(zhí)行多項(xiàng)并列驗(yàn)證檢查;錯(cuò)誤信息的顯示:驗(yàn)證控件通常在呈現(xiàn)的窗體中不可見,檢測到錯(cuò)誤時(shí)可以:1、通過驗(yàn)證控件本身顯示出來;2、通過ValidationSummary控件把所有的驗(yàn)證錯(cuò)誤信息集中起來顯示。服務(wù)器端驗(yàn)證:包含驗(yàn)證操作的頁面必須提交到服務(wù)器端后,服務(wù)器將逐個(gè)調(diào)用驗(yàn)證控件來檢查用戶輸入,完成頁面驗(yàn)證??蛻舳蓑?yàn)證:
驗(yàn)證操作在頁面提交給服務(wù)器前由客戶端瀏覽器解釋執(zhí)行??蛻舳蓑?yàn)證能明顯的縮短頁面的響應(yīng)時(shí)間,錯(cuò)誤信息會(huì)在用戶離開有錯(cuò)控件后立即顯示。說明:
即使驗(yàn)證控件已在客戶端執(zhí)行驗(yàn)證,頁框架仍然在服務(wù)器上執(zhí)行它。7.1數(shù)據(jù)有效性驗(yàn)證機(jī)制簡介3.驗(yàn)證控件的驗(yàn)證機(jī)制在處理用戶輸入的數(shù)據(jù)時(shí),ASP.NET頁面首先將用戶輸入傳遞到一個(gè)或多個(gè)適當(dāng)?shù)尿?yàn)證控件。驗(yàn)證控件將測試用戶輸入并設(shè)置表示輸入是否通過測試的屬性。在調(diào)用所有驗(yàn)證控件之后,頁上將設(shè)置一個(gè)屬性(IsValid),如果任何一個(gè)控件顯示驗(yàn)證檢查失敗,則整個(gè)頁的屬性都將設(shè)置為無效。如果數(shù)據(jù)驗(yàn)證沒有通過(IsValid屬性為False),錯(cuò)誤信息可由該驗(yàn)證控件顯示在頁面中,或者顯示在頁面上其它位置的驗(yàn)證匯總ValidationSummary控件中。7.1數(shù)據(jù)有效性驗(yàn)證機(jī)制簡介3.驗(yàn)證控件的驗(yàn)證機(jī)制屬性名描述和取值ControlToValidate驗(yàn)證控件將計(jì)算的輸入控件的編程ID。如果此為非法ID,則引發(fā)異常EnableClientScript指示是否啟用客戶端驗(yàn)證。通過將EnableClientScript屬性設(shè)置為false,可在支持此功能的瀏覽器上禁用客戶端驗(yàn)證Display指定的驗(yàn)證控件的顯示行為??梢詢H在ValidationSummary控件中顯示錯(cuò)誤信息;或在驗(yàn)證控件位置顯示錯(cuò)誤信息;或在頁面上動(dòng)態(tài)分配錯(cuò)誤信息顯示的空間Enabled指示是否啟用驗(yàn)證控件??赏ㄟ^將該屬性設(shè)置為False以阻止驗(yàn)證控件驗(yàn)證輸入控件7.1數(shù)據(jù)有效性驗(yàn)證機(jī)制簡介3.驗(yàn)證控件的驗(yàn)證機(jī)制屬性名描述和取值ErrorMessage當(dāng)驗(yàn)證失敗時(shí)在ValidationSummary控件中顯示的錯(cuò)誤信息。如果未設(shè)置驗(yàn)證控件的
Text屬性,則驗(yàn)證失敗時(shí),驗(yàn)證控件中仍顯示此文本。ErrorMessage屬性通常用于為驗(yàn)證控件和
ValidationSummary控件提供各種消息ForeColor指定當(dāng)驗(yàn)證失敗時(shí)用于顯示內(nèi)聯(lián)消息的顏色。IsValid指示ControlToValidate屬性所指定的輸入控件是否被確定為有效Text此屬性設(shè)置后,驗(yàn)證失敗時(shí)會(huì)在驗(yàn)證控件中顯示此消息。如果未設(shè)置此屬性,則在控件中顯示
ErrorMessage屬性中指定的文本7.2必填驗(yàn)證(RequireFieldValidator)控件使用RequiredFieldValidator控件可以使某個(gè)輸入控件成為強(qiáng)制字段。當(dāng)驗(yàn)證執(zhí)行時(shí),如果輸入控件包含的值仍然保持初始值而未更改,則該輸入控件驗(yàn)證失敗。在默認(rèn)情況下,驗(yàn)證控件的初始值(InitialValue屬性)為空字符串(“”),這說明必須在輸入控件中輸入值才能通過驗(yàn)證。必填驗(yàn)證控件的語法如下:
<ASP:RequiredFieldValidator
ID="Validator_Name"Runat="Server"
ControlToValidate="要檢查的控件名"
ErrorMessage="出錯(cuò)信息"Display="Static|Dymatic|None"></ASP:RequiredFieldValidator>7.2必填驗(yàn)證(RequireFieldValidator)控件有時(shí)初始值不為空字符串。當(dāng)輸入控件具有默認(rèn)值而且希望用戶選擇其他值時(shí),這將非常有用。例如,默認(rèn)情況下,可能有一個(gè)具有選定輸入的ListBox控件,其中包含用戶從列表中選擇項(xiàng)的說明。用戶必須從控件中選擇一項(xiàng),若不希望用戶選擇包含說明的項(xiàng)。則可通過將該項(xiàng)的值指定為初始值來防止用戶選擇該項(xiàng)。如果用戶選擇該項(xiàng)RequriedFieldValidator將顯示它的錯(cuò)誤信息。若要指定關(guān)聯(lián)輸入控件的起始值,則可設(shè)置InitialValue屬性。多個(gè)驗(yàn)證程序可與同一個(gè)輸入控件關(guān)聯(lián)。例如:可在頁面中使用一個(gè)RequiredFieldValidator驗(yàn)證控件確保有信息輸入到控件中,同時(shí)可使用另一個(gè)RangeValidator驗(yàn)證控件確保輸入值在指定的數(shù)據(jù)范圍內(nèi)。7.2.1對(duì)用戶名和密碼進(jìn)行驗(yàn)證
【例7-1】用戶名和密碼的驗(yàn)證
對(duì)于大多數(shù)系統(tǒng),用戶登錄頁面都是必需的。在此實(shí)例中,將使用必填驗(yàn)證控件完成用戶提交的用戶名和密碼的驗(yàn)證,避免用戶漏填。詳細(xì)過程可上機(jī)操作并參見教材內(nèi)容。7.2.2對(duì)下拉框進(jìn)行驗(yàn)證
【例7-2】下拉框用戶選擇信息的驗(yàn)證
表單中用于獲取用戶信息的控件有很多,如:下拉框、列表框、復(fù)選框、單選框等,在這些輸入框中,用戶輸入或選擇的信息也同樣需要驗(yàn)證。本實(shí)例中將對(duì)表單中用戶選擇輸入項(xiàng)的下拉框進(jìn)行用戶所選項(xiàng)的驗(yàn)證。詳細(xì)過程可上機(jī)操作并參見教材內(nèi)容。7.3比較驗(yàn)證(CompareValidator)控件
比較驗(yàn)證CompareValidator控件可以將用戶輸入到一個(gè)輸入控件中的值同輸入到另一個(gè)輸入控件中的值相比較,或?qū)⒃撝蹬c某個(gè)常數(shù)值相比較。還可以使用CompareValidator控件確定輸入到輸入控件中的值是否可以轉(zhuǎn)換為Type屬性所指定的數(shù)據(jù)類型。比較驗(yàn)證控件的語法如下:
<ASP:CompareValidator
ID="Validator_ID"RunAt="Server"
ControlToValidate="要驗(yàn)證的控件ID"
ErrorMessage="錯(cuò)誤信息"ControlToCompare="要比較的控件ID"Type="String|Integer|Double|DateTime|Currency"Operator="Equal|NotEqual|GreaterThan|GreaterTanEqual|LessThan|LessThanEqual"
DataTypeCheck"Display="Static|Dymatic|None"></ASP:CompareValidator>
7.3比較驗(yàn)證(CompareValidator)控件
通過設(shè)置ControlToValidate屬性指定要驗(yàn)證的輸入控件。若要將特定的輸入控件與另一個(gè)輸入控件相比較,則使用要比較的控件的名稱設(shè)置ControlToCompare屬性??梢詫⒁粋€(gè)輸入控件的值同某個(gè)常數(shù)值相比較,而不是比較兩個(gè)輸入控件的值。通過設(shè)置ValueToCompare屬性指定要比較的常數(shù)值。
Operator屬性指定要執(zhí)行的比較類型,如大于、等于等。如果將Operator屬性設(shè)置為DataTypeCheck(類型檢查),CompareValidator控件將同時(shí)忽略ControlToCompare屬性和ValueToCompare屬性,而僅指示輸入到輸入控件中的值是否可以轉(zhuǎn)換為Type屬性所指定的數(shù)據(jù)類型。7.3.1使用驗(yàn)證控件的四則運(yùn)算
【例7-3】帶有數(shù)據(jù)校驗(yàn)的四則運(yùn)算在頁面數(shù)據(jù)理中,加減乘除四則運(yùn)算是較常用的基本運(yùn)算,下面的實(shí)例中將首先實(shí)現(xiàn)任意輸入兩個(gè)整型數(shù)的四則運(yùn)算。詳細(xì)過程可上機(jī)操作并參見教材內(nèi)容。7.3.2密碼和確認(rèn)密碼的比較驗(yàn)證
【例7-4】密碼和密碼確認(rèn)信息的比較驗(yàn)證
當(dāng)用戶在某個(gè)網(wǎng)站上注冊時(shí),通常需要用戶填寫登錄時(shí)使用的用戶名和密碼,由于密碼框中字符使用點(diǎn)號(hào)或星號(hào)來表示,通常都需要用戶再次確認(rèn)密碼,只有兩個(gè)輸入的密碼完全相同,才能保證用戶輸入的密碼確實(shí)是自己預(yù)期想要輸入的密碼。在本實(shí)例中,使用比較驗(yàn)證控件來驗(yàn)證用戶輸入的密碼確實(shí)是自己預(yù)期想要輸入的密碼。詳細(xì)過程可上機(jī)操作并參見教材內(nèi)容。7.4范圍驗(yàn)證(RangeValidator)控件可使用該控件檢查用戶的輸入是否在指定的上限和下限之間??梢詸z查數(shù)字對(duì)、字母對(duì)和日期對(duì)限定的范圍。范圍驗(yàn)證控件的語法為:
<ASP:RangeValidator
ID="Vaidator_ID"Runat="Server"
ControlToValidate="要驗(yàn)證的控件ID"Type="String|Integer|Double|Date|Currency"
MinimumValue="最小值"MaximumValue="最大值"
ErrorMessage="錯(cuò)誤信息"Display="Static|Dymatic|None"></ASP:RangeValidator>7.4范圍驗(yàn)證(RangeValidator)控件使用ControlToValidate屬性指定要驗(yàn)證的輸入控件,MinimumValue和MaximumValue屬性分別指定有效范圍的最小值和最大值。
Type屬性用于指定要比較的值的數(shù)據(jù)類型,有String字符串、Integer整型數(shù)、Double雙精度的浮點(diǎn)型數(shù)、Date日期類型、Currency貨幣類型。在執(zhí)行任何比較之前,先將要比較的值轉(zhuǎn)換為該數(shù)據(jù)類型。
注意:如果輸入控件為空,則不調(diào)用任何驗(yàn)證函數(shù)且驗(yàn)證成功。需要使用RequiredFieldValidator必填驗(yàn)證控件防止用戶跳過某個(gè)輸入控件。由MaximumValue最大值屬性或MinimumValue最小值屬性指定的值,當(dāng)無法轉(zhuǎn)換為由Type類型屬性指定的數(shù)據(jù)類型時(shí),RangeValidator范圍驗(yàn)證控件將引發(fā)異常。7.4.1控制正確數(shù)據(jù)范圍
通常用戶在頁面上輸入數(shù)據(jù)時(shí),某些數(shù)據(jù)是有范圍限定的,比如:用戶年齡、時(shí)間日期、學(xué)生成績等,需要使用另一類驗(yàn)證控件——范圍驗(yàn)證RangeValidator控件來驗(yàn)證用戶輸入數(shù)據(jù)的范圍是否滿足,增強(qiáng)系統(tǒng)的容錯(cuò)性?!纠?-5】用戶生日日期范圍驗(yàn)證使用范圍驗(yàn)證控件,對(duì)用戶輸入的生日日期范圍進(jìn)行驗(yàn)證,保證登錄系統(tǒng)的用戶年齡在18-80歲之間。詳細(xì)過程可上機(jī)操作并參見教材內(nèi)容。7.4.2使用區(qū)間驗(yàn)證控件驗(yàn)證學(xué)生成績
RangeValidator范圍驗(yàn)證控件還可完成String字符串、Integer整型數(shù)、Double雙精度的浮點(diǎn)型數(shù)、Date日期類型、Currency貨幣類型數(shù)據(jù)的驗(yàn)證?!纠?-6】學(xué)生成績范圍驗(yàn)證本實(shí)例將進(jìn)行學(xué)生成績(0-100)的整型數(shù)驗(yàn)證,使用范圍驗(yàn)證控件來實(shí)現(xiàn)學(xué)生成績信息的范圍驗(yàn)證,防止用戶輸入錯(cuò)誤。詳細(xì)過程可上機(jī)操作并參見教材內(nèi)容。7.5規(guī)則驗(yàn)證控件
RegularExpressionValidator規(guī)則驗(yàn)證控件用于確定輸入控件的值是否與某個(gè)正則表達(dá)式所定義的模式相匹配。該驗(yàn)證類型允許檢查可預(yù)知的字符序列,如:社會(huì)保障號(hào)、電子郵件地址、電話號(hào)碼、郵政編碼等中的字符序列。規(guī)則驗(yàn)證控件的語法如下:
<ASP:RegularExpressionValidator
ID="Validator_ID"RunAt="Server"
ControlToValidate="要驗(yàn)證控件名"
ValidationExpression="正則表達(dá)式"
ErrorMessage="錯(cuò)誤信息"Display="Static|Dymatic|None"></ASP:RegularExpressionValidator>7.5規(guī)則驗(yàn)證控件
客戶端的正則表達(dá)式驗(yàn)證語法和服務(wù)器端略有不同。在客戶端,使用的是JScript正則表達(dá)式語法。而在服務(wù)器端使用的則是Regex語法。由于JScript正則表達(dá)式語法是Regex語法的子集,所以最好使用JScript正則表達(dá)式語法,以便在客戶端和服務(wù)器端得到同樣的結(jié)果。7.5.1規(guī)則驗(yàn)證控件常用的屬性和事件
1.規(guī)則驗(yàn)證控件的屬性
規(guī)則驗(yàn)證控件的屬性與其他驗(yàn)證控件的屬性相似,常用的有:
使用待驗(yàn)證控件ControlToValidate屬性指定被驗(yàn)證的控件的ID屬性;
使用Text屬性獲取或指定該驗(yàn)證控件未通過驗(yàn)證時(shí)在驗(yàn)證控件中顯示的文本,若未設(shè)定將顯示錯(cuò)誤信息ErrorMessage屬性的文本;
使用ErrorMessage屬性指定未通過驗(yàn)證時(shí)顯示在驗(yàn)證摘要控件中的文本信息;
使用驗(yàn)證表達(dá)式ValidationExpression屬性用于確定有效性的正則表達(dá)式。7.5.1規(guī)則驗(yàn)證控件常用的屬性和事件
2.規(guī)則驗(yàn)證控件的事件
規(guī)則驗(yàn)證控件的事件主要有:
驗(yàn)證Validate事件,用于對(duì)關(guān)聯(lián)的輸入控件進(jìn)行驗(yàn)證時(shí)觸發(fā);
數(shù)據(jù)綁定DataBinding事件,在要驗(yàn)證控件的數(shù)據(jù)綁定表達(dá)式時(shí)觸發(fā);
釋放Dispoesd事件,在該驗(yàn)證控件已被釋放后觸發(fā);
頁面加載Load事件,在加載頁面后觸發(fā);
頁面卸載Unload事件,在卸載驗(yàn)證控件所在頁面時(shí)觸發(fā)。7.5.2創(chuàng)建正則表達(dá)式
正則表達(dá)式(也稱正規(guī)式)是計(jì)算機(jī)編譯原理中,用來描述單詞符號(hào)的方便工具。正則表達(dá)式提供了功能強(qiáng)大、靈活而又高效的方法來處理文本。正則表達(dá)式的全面模式匹配表示法可以快速地分析大量的文本以找到特定的字符模式;提取、編輯、替換或刪除文本子字符串;將提取的字符串添加到集合以生成報(bào)告。對(duì)于處理字符串(例如:HTML代碼、日志文件分析和HTTP標(biāo)頭分析)的許多應(yīng)用程序而言,正則表達(dá)式是不可缺少的工具。在RegularExpressionValidator規(guī)則驗(yàn)證控件中,對(duì)于頁面中輸入框中所能接受的文本字符串樣式,都可以通過正規(guī)表達(dá)式來表示。下面先簡單介紹正規(guī)表達(dá)式的基本組成和寫法。7.5.2創(chuàng)建正則表達(dá)式
1.
正規(guī)表達(dá)式書寫形式
[] 用來定義可接收的字符
{} 用來定義必須輸入的字符數(shù)
|
用來表示“或”
() 表示可以使用括號(hào)
\
表示轉(zhuǎn)義例如:[a-z]匹配小寫英文字母;[A-Z]匹配大寫英文字母;[a-zA-Z]則匹配所有大小寫英文字母;[0-9]匹配所有數(shù)字;[\.\-\+]匹配所有句號(hào)、減號(hào)和加號(hào);[^a-z]指除了小寫英文字母以外的所有字符;[^0-9]指除了數(shù)字以外的所有字符。7.5.2創(chuàng)建正則表達(dá)式
2.常用匹配符號(hào)
.匹配除“\n”(回車換行)之外的任何字符*指定零個(gè)或更多個(gè)匹配
+指定一個(gè)或多個(gè)匹配
?指定零個(gè)或一個(gè)匹配
[指定字符集] 匹配指定字符集中包含的任何單個(gè)字符
[^指定字符集] 匹配不在指定字符集中的任何單個(gè)字符
[0-9a-fA-F] 使用連字號(hào)“–”指定連續(xù)字符范圍
\s與任何空字符匹配
\d與任何十進(jìn)制數(shù)字匹配
\w與任何單詞字符匹配,包括大小寫字母、數(shù)字和下劃線7.5.2創(chuàng)建正則表達(dá)式
3.正則表達(dá)式的書寫舉例
[a-zA-Z]{4,8}表示要求4-8個(gè)英文字母
[^a-zA-Z]{1,}表示不能包含字母,至少1個(gè)字符
[0-9]{3,}表示至少3個(gè)數(shù)字
{3,}表示至少3個(gè)字符
[a-zA-Z]{3,}表示至少3個(gè)英文字母
.{0,}表示任意字符
[A-Za-z0-9]{3}表示3個(gè)字母或數(shù)字,如123,r3a等
\.{3}表示3個(gè)點(diǎn)
.{1,}@.{3,}表示@前至少有1個(gè)字符,@后至少有3個(gè)字符
\(表示必須輸入左括號(hào)7.5.2創(chuàng)建正則表達(dá)式
3.正則表達(dá)式的書寫舉例
.{0,}河南.{0,} 表示必須包含有“河南”兩個(gè)字
\d{18}|\d{15}表示身份證號(hào)碼
(\d{3,4}-)?\d{7,8}表示中國的固定電話號(hào)碼(其中?表示最前的區(qū)號(hào)部分可出現(xiàn)一次,或不出現(xiàn))從上面的介紹和舉例可看出,正則表達(dá)式是一種文本模式,包括普通字符和特殊字符(稱為“元字符”)。模式描述在搜索文本時(shí)要匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式的結(jié)構(gòu)與算術(shù)表達(dá)式的結(jié)構(gòu)類似。即各種元字符和運(yùn)算符可以將小的表達(dá)式組合起來,創(chuàng)建大的表達(dá)式。7.5.2創(chuàng)建正則表達(dá)式
4.正則表達(dá)式的優(yōu)先級(jí)
正則表達(dá)式按從左到右的順序進(jìn)行計(jì)算,并遵循規(guī)定的優(yōu)先級(jí)順序,這與算術(shù)表達(dá)式非常類似。下表從最高級(jí)到最低級(jí)說明了各種正則表達(dá)式運(yùn)算符的優(yōu)先級(jí)順序。
運(yùn)算符說明\轉(zhuǎn)義符(),(?:),(?=),[]括號(hào)和中括號(hào)*,+,?,{n},{n,},{n,m}限定符^,$,\anymetacharacter,anycharacter定位點(diǎn)和序列|替換7.5.3電子郵件驗(yàn)證
在用戶注冊頁面中,通常需要用戶填寫電子郵件地址,然而電子郵件地址的組成較復(fù)雜,不能簡單地用前面介紹的必填驗(yàn)證控件、比較驗(yàn)證控件或范圍驗(yàn)證控件來驗(yàn)證,需要用特定的正規(guī)表達(dá)式來驗(yàn)證。在E-mail地址驗(yàn)證時(shí)要求:
(1)必須包含一個(gè)“@”;
(2)在“@”后面的字符串至少包含一個(gè)“.”號(hào);
(3)“@”前面和后面的字符串由一個(gè)或一個(gè)以上字母、數(shù)字、下劃線或減號(hào)構(gòu)成。根據(jù)這幾條規(guī)則,可以得出以下正則表達(dá)式:
[a-zA-Z0-9_\-]{1,}@[a-zA-Z0-9_\-]{1,}\.[a-zA-Z0-9_\-.]{1,}7.5.3電子郵件驗(yàn)證
【例7-7】電子郵件地址驗(yàn)證本實(shí)例將在頁面中對(duì)用戶提交的電子郵件地址進(jìn)行驗(yàn)證。詳細(xì)過程可上機(jī)操作并參見教材內(nèi)容。7.5.4帶有0.5分的百分制成績驗(yàn)證
通常錄入學(xué)生成績時(shí),會(huì)遇到帶0.5的情況。首先分析一下表示帶有0.5的從0到100的數(shù)據(jù)正則表達(dá)式,1位整數(shù)部分帶有或不帶有0.5的正則表達(dá)式為[0-9](.5)?或\d{1}(.5)?;2位整數(shù)部分帶有或不帶有0.5的正則表達(dá)式為[0-9]{2}(.5)?或\d{2}(.5)?,但通常不會(huì)出現(xiàn)例如07.5的成績,因而還需去掉十位上的0,改進(jìn)后的正則表達(dá)式為[1-9][0-9](.5)?或[1-9]\d{1}(.5)?;3位整數(shù)部分時(shí)只有100。綜合上面的3種情況,可得出正則表達(dá)式為(100)|([1-9]?[0-9](.5)?)。7.5.4帶有0.5分的百分制成績驗(yàn)證
【例7-8】帶有0.5的百分制學(xué)生成績驗(yàn)證
本實(shí)例將使用規(guī)則驗(yàn)證控件實(shí)現(xiàn)學(xué)生成績的驗(yàn)證,使用規(guī)則驗(yàn)證控件中的正則表達(dá)式對(duì)輸入的成績進(jìn)行格式的檢查和驗(yàn)證。詳細(xì)過程可上機(jī)操作并參見教材內(nèi)容。7.6用戶驗(yàn)證(CustomValidator)控件前面介紹的驗(yàn)證控件可以完成特定的數(shù)據(jù)驗(yàn)證,滿足用戶數(shù)據(jù)驗(yàn)證的需求,然而由于它們專門針對(duì)特定的數(shù)據(jù)格式進(jìn)行驗(yàn)證,靈活性較差。而用戶驗(yàn)證CustomValidator控件則可采用自定義的驗(yàn)證邏輯創(chuàng)建驗(yàn)證控件。用戶驗(yàn)證控件的語法如下:
<ASP:CustomValidator
ID="Validator_ID"RunAt="Server"
ControlToValidate="要驗(yàn)證的控件"
OnServerValidateFunction="驗(yàn)證函數(shù)"
ErrorMessage="錯(cuò)誤信息"Display="Static|Dymatic|None"></ASP:CustomValidator>7.6用戶驗(yàn)證(CustomValidator)控件通常驗(yàn)證控件大多是在服務(wù)器上執(zhí)行驗(yàn)證檢查,它們同時(shí)還具有完整的客戶端實(shí)現(xiàn),該實(shí)現(xiàn)允許支持DHTML的瀏覽器(如MicrosoftInternetExplorer4.0或更高版本)在客戶端執(zhí)行驗(yàn)證??蛻舳蓑?yàn)證通過在向服務(wù)器發(fā)送用戶輸入前檢查用戶輸入來增強(qiáng)驗(yàn)證過程。這使得在提交窗體前即可在客戶端檢測到錯(cuò)誤,從而避免了服務(wù)器端驗(yàn)證所需要的信息的來回傳遞,減少了網(wǎng)絡(luò)的數(shù)據(jù)流量,加快了數(shù)據(jù)的處理速度。若要?jiǎng)?chuàng)建服務(wù)器端驗(yàn)證函數(shù),則需為執(zhí)行驗(yàn)證的ServerValidate事件提供處理程序,通過將ServerValidateEventArgs對(duì)象的Value屬性作為參數(shù)傳遞到事件處理程序,可以獲取來自要驗(yàn)證的輸入控件的字符串。驗(yàn)證結(jié)果隨即存儲(chǔ)在ServerValidateEventArgs對(duì)象的IsValid屬性中。7.6用戶驗(yàn)證(CustomValidator)控件對(duì)于客戶端自定義驗(yàn)證,首先,需編寫驗(yàn)證函數(shù),并添加到.aspx
頁面中;然后,將該驗(yàn)證函數(shù)的名稱標(biāo)識(shí)設(shè)置給CustomValidator用戶驗(yàn)證控件的ClientValidationFunction屬性。自定義函數(shù)的形式必須為function函數(shù)名(source,args)。其中,source是客戶端CustomValidator對(duì)象,而args(arguments簡寫)是具有Value和IsValid兩個(gè)屬性的對(duì)象。Value屬性是要驗(yàn)證的值,而IsValid屬性是一個(gè)布爾值,用于判斷驗(yàn)證是否通過的返回結(jié)果。與其它驗(yàn)證控件不同的是,CustomValidator用戶驗(yàn)證控件可以在輸入為空值時(shí)決定是否驗(yàn)證。ValidateEmptyText屬性默認(rèn)為false,即為空時(shí)不驗(yàn)證(此時(shí)跟其它控件是一樣的都不驗(yàn)證),而若將該屬性設(shè)為true,則當(dāng)驗(yàn)證的輸入控件為空時(shí)同樣進(jìn)行驗(yàn)證,從而有效地保證驗(yàn)證的有效性。7.6用戶驗(yàn)證(CustomValidator)控件另外與其它驗(yàn)證控件不同的是,CustomValidator用戶驗(yàn)證控件可以不必綁定到某一表單控件,即ControlToValidate屬性不是必須的。不指定綁定的輸入控件時(shí),在驗(yàn)證函數(shù)中,可以直接通過語句訪問獲取表單中任意輸入控件的屬性值,從而進(jìn)一步完成數(shù)據(jù)驗(yàn)證,因而為數(shù)據(jù)驗(yàn)證提供了極大的靈活性。7.6.1驗(yàn)證輸入的數(shù)據(jù)是否為雙休日
在頁面上經(jīng)常需要用戶填寫日期數(shù)據(jù),對(duì)日期數(shù)據(jù)格式和范圍的驗(yàn)證前面的實(shí)例中已經(jīng)講解,在下面的實(shí)例中,將對(duì)用戶填寫日期的周信息(星期幾)進(jìn)行驗(yàn)證。
CustomValidator用戶驗(yàn)證控件提供服務(wù)器驗(yàn)證和客戶端驗(yàn)證兩種方式,下面的兩個(gè)實(shí)例將分別采用服務(wù)器端驗(yàn)證和客戶端驗(yàn)證,來實(shí)現(xiàn)驗(yàn)證用戶輸入日期是否為雙休日?!纠?-9】采用服務(wù)器端驗(yàn)證實(shí)現(xiàn)驗(yàn)證用戶輸入日期是否為雙休日
本實(shí)例采用的是服務(wù)器端驗(yàn)證,需要編寫在服務(wù)器端運(yùn)行的用戶驗(yàn)證控件的ServerValidate事件代碼,完成對(duì)輸入數(shù)據(jù)的驗(yàn)證。詳細(xì)過程可上機(jī)操作并參見教材內(nèi)容。7.6.1驗(yàn)證輸入的數(shù)據(jù)是否為雙休日
【例7-10】采用客戶器端驗(yàn)證實(shí)現(xiàn)驗(yàn)證用戶輸入日期是否為雙休日本實(shí)例采用的是客戶端驗(yàn)證,需使用JavaScript編寫客戶端運(yùn)行的驗(yàn)證函數(shù);并將該驗(yàn)證函數(shù)的名稱標(biāo)識(shí)設(shè)置給CustomValidator用戶
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44889-2024機(jī)關(guān)運(yùn)行成本統(tǒng)計(jì)指南
- 工作總結(jié)之房地產(chǎn)頂崗實(shí)習(xí)總結(jié)
- 工作總結(jié)之城市認(rèn)知實(shí)習(xí)總結(jié)
- 銀行內(nèi)部審計(jì)結(jié)果運(yùn)用制度
- 幼兒園元宵節(jié)做元宵活動(dòng)總結(jié)(32篇)
- 《讓測試敏捷起來》課件
- 內(nèi)衣銷售渠道研究報(bào)告(摘要fuheng)
- 黑龍江省虎林市2025屆高三六校第一次聯(lián)考數(shù)學(xué)試卷含解析
- 福建省廈門湖濱中學(xué)2025屆高三3月份第一次模擬考試數(shù)學(xué)試卷含解析
- 浙江省慈溪市2025屆高三第五次模擬考試英語試卷含解析
- 冬季物業(yè)安全管理培訓(xùn)
- 魯迅先生的生平及其背景
- 2025年1月“八省聯(lián)考”考前猜想卷(含答案解析)
- 2024年度餐飲業(yè)智能點(diǎn)餐系統(tǒng)合同
- GB/T 11981-2024建筑用輕鋼龍骨
- 修大棚合同范例
- 2024年高考物理復(fù)習(xí)試題分類訓(xùn)練:電場(學(xué)生卷)
- 2023-2024學(xué)年九年級(jí)歷史上冊期末模擬卷(含答案解析)
- 植物學(xué)#-形考作業(yè)3-國開(ZJ)-參考資料
- 意向定金合同模板
- 貨幣交易居間合同模板
評(píng)論
0/150
提交評(píng)論