国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET表單驗證方法詳解第1/2頁

2024-07-10 13:21:39
字體:
來源:轉載
供稿:網友
1、使用驗證控件
這屬于客戶端驗證,微軟開發人員將最常用的驗證功能進行了封裝,使得我們開發效率明顯提高,而且特別是自定義驗證控件,非常靈活,我們可以自行設計驗證邏輯。但是驗證控件收到了瀏覽器的限制,記得在一次開發過程中,使用FireFox瀏覽器進行瀏覽,發現所有的驗證控件失靈,這個并非是ASP.NET設計的漏洞,只能說瀏覽器標準的不唯一造成的。
ASP.NET公有六種驗證控件,分別如下: 
RequiredFieldValidator(必須字段驗證) 用于檢查是否有輸入值
CompareValidator(比較驗證) 按設定比較兩個輸入
RangeValidator(范圍驗證) 輸入是否在指定范圍
RegularExpressionValidator(正則表達式驗證) 正則表達式驗證控件
CustomValidator(自定義驗證) 自定義驗證控件
ValidationSummary(驗證總結) 總結驗證結果
2、使用JS驗證
JS驗證,出現的比較早,也屬于客戶端驗證,其靈活、適用的性能深得人們的喜好。
3、后臺程序驗證
盡管客戶端驗證比較靈活,但是其局限性也很明顯,服務器端驗證必不可少。
(1) 安全性 如若惡意攻擊者,將客戶端頁面的驗證控件和JS驗證全部抹去,而服務器端又沒有做出有效的驗證處理,必將給攻擊者帶來很大的漏洞,其后果不堪設想。
(2) 客戶端驗證的局限性,比如用戶注冊,需要判定用戶名是否存在,這個需要從數據庫查詢進行判定.
(3) 功能強大 各種驗證功能都可以在這里實現。
缺點:增加服務器端負擔
4、Ajax類的驗證
這個結合了客戶端驗證和服務器端驗證。因為使用ajax框架,性能上付出的代價較小,但是用戶體驗和編碼的簡易度提高了。

而在進行驗證過程中,對于不同格式的驗證,就需要強大靈活的正則表達式了。

使用正則表達式進行驗證:
在編寫處理字符串的程序或網頁時,經常會有查找符合某些復雜規則的字符串的需要。正則表達式就是用于描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。

關于正則表達式的詳細信息請查看:

正則表達式用于字符串處理、表單驗證等場合,實用高效,所以其應用非常廣泛,下面我就通過幾個例子來說明正則表達式在驗證中的具體應用。

在這里我以驗證電話號碼的格式為例進行介紹。
<1>使用JS驗證

復制代碼 代碼如下:


<asp:Button runat="server" Text="測試" OnClientClick="return checkCellPhone();" />


驗證手機的JS代碼

復制代碼 代碼如下:


<script type="text/javascript">
function checkCellPhone()//驗證手機
{
var mobile=document.getElementById ("tbMobile").value;
if(mobile!="")
{
var reg0=/^13/d{5,9}$/; //130--139。至少7位
var reg1=/^153/d{4,8}$/; //聯通153。至少7位
var reg2=/^159/d{4,8}$/; //移動159。至少7位
var reg3=/^158/d{4,8}$/; //移動158。至少7位
if (reg0.test(mobile)||reg1.test(mobile)||reg2.test(mobile)||reg3.test(mobile))
{
return true;
}
else
{
alert("手機號格式錯誤!");
document.getElementById ("tbMobile").focus();
return false;
}
}
else
{
alert("手機號不能為空!");
document.getElementById ("tbMobile").focus();
return false;
}
}
</script>



<2>使用驗證控件

自定義驗證控件:

復制代碼 代碼如下:


<asp:CustomValidator runat="server" ControlToValidate="tbMobile" ClientValidationFunction="checkCellPhone"></asp:CustomValidator>


正則表達式驗證控件(當然這種方法需要加入非空驗證)

復制代碼 代碼如下:


<asp:RegularExpressionValidator runat="server" ControlToValidate="tbPhone" ValidationExpression="^(013|015|13|15)/d{9}$" ErrorMessage="手機號碼格式錯誤!"></asp:RegularExpressionValidator>


<3>使用服務器端程序驗證

復制代碼 代碼如下:


public static bool ValidatePhone(string phone)
{
return System.Text.RegularExpressions.Regex.IsMatch(phone, @"^[1]+[3,5]+/d{9}");
}


上述的是一個簡單的應用實例,只要你知道正則表達式的寫法,你可以隨意將上面實例中的正則表達式進行替換,將一些邏輯進行修改,就能夠滿足你在驗證方面,可以說足夠滿足你常用的驗證。在這里我也收集了一些常用的正則表達式,希望能夠對大家有所幫助。

復制代碼 代碼如下:


匹配中文字符的正則表達式: [/u4e00-/u9fa5]

匹配雙字節字符(包括漢字在內):[^/x00-/xff]
備注:可以用來計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)

匹配空白行的正則表達式:/n/s*/r
備注:可以用來刪除空白行

匹配HTML標記的正則表達式:<(/S*?)[^>]*>.*?<//1>|<.*? />
備注:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對于復雜的嵌套標記依舊無能為力

匹配首尾空白字符的正則表達式:^/s*|/s*$
備注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式

匹配Email地址的正則表達式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*

匹配網址URL的正則表達式:[a-zA-z]+://[^/s]*

匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

匹配國內電話號碼:/d{3}-/d{8}|/d{4}-/d{7}
備注:匹配形式如 0511-4405222 或 021-87888822

匹配騰訊QQ號:[1-9][0-9]{4,}
備注:騰訊QQ號從10000開始

匹配中國郵政編碼:[1-9]/d{5}(?!/d)
備注:中國郵政編碼為6位數字

匹配身份證:/d{15}|/d{18}
備注:中國的身份證為15位或18位

匹配ip地址:/d+/./d+/./d+/./d+
備注:提取ip地址時有用

匹配特定數字:
^[1-9]/d*$    //匹配正整數
^-[1-9]/d*$   //匹配負整數
^-?[1-9]/d*$   //匹配整數
^[1-9]/d*|0$  //匹配非負整數(正整數 + 0)
^-[1-9]/d*|0$   //匹配非正整數(負整數 + 0)
^[1-9]/d*/./d*|0/./d*[1-9]/d*$   //匹配正浮點數
^-([1-9]/d*/./d*|0/./d*[1-9]/d*)$  //匹配負浮點數
^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$  //匹配浮點數
^[1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0$   //匹配非負浮點數(正浮點數 + 0)
^(-([1-9]/d*/./d*|0/./d*[1-9]/d*))|0?/.0+|0$  //匹配非正浮點數(負浮點數 + 0)
備注:處理大量數據時有用,具體應用時注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26個英文字母組成的字符串
^[A-Z]+$  //匹配由26個英文字母的大寫組成的字符串
^[a-z]+$  //匹配由26個英文字母的小寫組成的字符串
^[A-Za-z0-9]+$  //匹配由數字和26個英文字母組成的字符串
^/w+$  //匹配由數字、26個英文字母或者下劃線組成的字符串

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云南省| 嘉鱼县| 山东省| 交口县| 黔南| 枝江市| 洛隆县| 顺昌县| 肇庆市| 社旗县| 吉隆县| 南漳县| 扎兰屯市| 嘉禾县| 邹平县| 延吉市| 阿鲁科尔沁旗| 昌邑市| 台北县| 崇义县| 博罗县| 江油市| 珲春市| 措勤县| 五峰| 石城县| 勃利县| 启东市| 宣城市| 同江市| 楚雄市| 全州县| 龙南县| 镇原县| 洪江市| 文昌市| 绩溪县| 卓资县| 临西县| 清徐县| 阿拉善右旗|