正则表达式(RegularExpression)

正则表达式(RegularExpression)是一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹

配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 使用正则表达式,就可以:
1. 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称
为数据有效性验证。
2. 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
3. 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
正是由于“正则表达式”的强大功能,才使得微软慢慢将正则表达式对象移植到了视窗系统上面。在书写正则表达式的模式时使用了特殊的字
符和序列。下表描述了可以使用的字符和序列,并给出了实例。

字符描述: :将下一个字符标记为特殊字符或字面值。例如"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] :一个否定的字符集。匹配不在此括
号中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p". [a-z] :表示某个范围内的字符。与指定区间内的任何字符匹配。例如,
"[a-z]"匹配"a"

与"z"之间的任何一个小写字母字符。 [^m-z] :否定的字符区间。与不在指定区间内的字符匹配。例如,"[m-z]"与不在"m"到"z"之间的任何
字符匹配。 b :与单词的边界匹配,即单词与空格之间的位置。例如,"erb" 与"never"中的"er"匹配,但是不匹配"verb"中的"er"。 B
:与非单词边界匹配。"ea*rB"与"never early"中的"ear"匹配。 d :与一个数字字符匹配。等价于[0-9]。 D :与非数字的字符匹配。等
价于[^0-9]。 f :与分页符匹配。 n :与换行符字符匹配。 r :与回车字符匹配。 s :与任何白字符匹配,包括空格、制表符、分页
符等。等价于"[ fnrtv]"。 S :与任何非空白的字符匹配。等价于"[^ fnrtv]"。 t :与制表符匹配。 v :与垂直制表符匹配
。 w :与任何单词字符匹配,包括下划线。等价于"[A-Za-z0-9_]"。 W :与任何非单词字符匹配。等价于"[^A-Za-z0-9_]"。 num :匹配
num个,其中 num 为一个正整数。引用回到记住的匹配。例如,"(.)1"匹配两个连续的相同的字符。 n:匹配 n,其中n 是一个八进制换码
值。八进制换码值必须是 1, 2 或 3 个数字长。 例如,"11" 和 "11" 都与一个制表符匹配。"011"等价于"01" 与 "1"。八进制换码
值不得超过 256。否则,只有前两个字符被视为表达式的一部分。允许在正则表达式中使用ASCII码。 xn:匹配n,其中n是一个十六进制的
换码值。十六进制换码值必须恰好为两个数字长。例如,"x41"匹配"A"。"x041"等价于"x04" 和 "1"。允许在正则表达式中使用 ASCII 码
。 RegularExpressionValidator有两种主要的属性来进行有效性验证。ControlToValidate 包含了一个值进行验证。如取出文本框中的值。如
ControlToValidate="TextBox1" ValidationExpression 包含了一个正则表达式进行验证。 好了,有了上面的叙述,我们就举个例子来说明正
则表达式。比如,我们想要对用户输入的电子邮件进行校验,那么,什么样的数据才算是一个合法的电子邮件呢?我可以这样输入:
test@yesky.com,当然我也会这样输入:xxx@yyy.com.cn,但是这样的输入就是非法的:xxx@@com.cn或者@xxx.com.cn,等等,所以我们得出
一个合法的电子邮件地址至少应当满足以下几个条件: 1. 必须包含一个并且只有一个符号“@” 2. 第一个字符不得是“@”或者“.” 3.
不允许出现“@.”或者.@ 4. 结尾不得是字符“@”或者“.” 所以根据以上的原则和上面表中的语法,我们很容易的就可以得到需要的模板
如下:"= "^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$"

--------------------------------------------------------------------------------------------------------------------------
下面是完整验证通过的代码(直接放在一个aspx文件中即可),其实书中写的都不完整,例如:sub validatebtn_click在代码中就没有,是自己
添加上去的。否则,编译都不能通过的!
--->象RegularExpressionValidator等,都是vs.net的新增服务器控件,不是什么其他的冬冬!

<TITLE>使用正则表达式验证</TITLE>
<body>
<center>
<h3><font face="Verdana">使用正则表达式验证</font></h3>
</center>
<p>
<form id="Form1" runat="server">
<center>
<table cellPadding="10" bgColor="#eeeeee">
<tr vAlign="top">
<td colSpan="3"><asp:label id="lblOutput" runat="server" Font-Size="10pt" Font-Name="Verdana" Text="输入E-mail地址"></asp:label></td>
</tr>
<tr>
<td align="right"><font face="Verdana" size="2">E-mail:</font>
</td>
<td><ASP:TEXTBOX id="TextBox1" runat="server"></ASP:TEXTBOX></td>
<td><asp:regularexpressionvalidator id="RegularExpressionValidator1" runat="server" Font-Size="10pt" Font-Name="verdana"
Display="Static" ValidationExpression="^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$"
ControlToValidate="TextBox1"> 请输入有效的E-mail地址! </asp:regularexpressionvalidator></td>
</tr>
<tr>
<td></td>
<td><ASP:BUTTON id="Button1" οnclick="ValidateBtn_Click" runat="server" text="验证"></ASP:BUTTON></td>
<td><FONT face="宋体"></FONT></td>
</tr>
</table>
</center>
</form>
<script language="vb" runat="server">
Sub ValidateBtn_Click(sender As Object, e As EventArgs)
If (Page.IsValid) Then
lblOutput.Text = "页面有效!"
Else lblOutput.Text = "在页面中不能出现空项!"
End If
If not isnumeric(TextBox1.text) then
'bloutput.text="请输入数值!"
End if '在这里我们只作了一个简单的判断。使用了left$()函数
'if left$(textbox1.text,2)<>"11" then
'lbloutput.text="请验证你的身份证输入"
'End if
End Sub
</script>
<asp:RegularExpressionValidator id="RegularExpressionValidator2" runat="server" ErrorMessage="RegularExpressionValidator"
ValidationExpression="w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*"></asp:RegularExpressionValidator>
</body> 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值