`
zhangziyueup
  • 浏览: 1172614 次
文章分类
社区版块
存档分类
最新评论

正则表达式(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" onclick="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>

分享到:
评论

相关推荐

    正则表达式regularexpression手册下载.rar

    正则表达式regularexpression手册下载,正则表达式的API,在开发过程中还是比较有用的!

    常用的正则表达式(regularExpression)

    常用的正则表达式 1. Email: \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b 2. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 3. 匹配双字节字符(包括汉字在内):[^\x00-\xff] 4. 匹配空白行的正则表达式:\n\s*\r

    常用正则表达式如:日期正则表达式,使用RegularExpressionValidator验证控件时的验证功能及其验证表达式,从URL地址中提取文件名的javascript程序等

    包含在我们平时编程中常用正则表达式如:日期正则表达式,使用RegularExpressionValidator验证控件时的验证功能及其验证表达式,从URL地址中提取文件名的javascript程序等

    Java-PHP正则表达式的使用

    匹配中文字符的正则表达式: [u4e00-u9fa5]  评注:匹配中文还真是个头疼的事,有了这个表达式就好办了  匹配双字节字符(包括汉字在内):[^x00-xff]  评注:可以用来计算字符串的长度(一个双字节字符长度计2...

    一个基于C#实现的Regular Expression正则表达式验证工具程序代码

    一个基于C#实现的Regular Expression正则表达式验证工具程序代码。

    正则表达式大全

    正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。 正则表达式是烦琐...

    Regular Expression正则表达式全攻略

    正则表达式全攻略 全面解析正则表达式

    正则表达式regular expression详述

    讲解的很详细,挺不错的 正则表达式是regular expression,看来英文比中文要好理解多了,就是检查表达式符不符合规定!!正则表达式有一个功能十分强大而又十分复杂的对象RegExp,在Javascript1.2 版本以上提供。

    解读C#正则表达式

    C#正则表达式、应该掌握的基础知识、RegularExpression组合体。。。

    正则表达式

    正则表达式及RegularExpressionValidator正则代码

    向大家推荐一个收集整理正则表达式的网站

     大家都知道ASP.NET中有个RegularExpressionValidator的校验控件,其中有一个属性就是要填充自己所写的正则表达式,以作为校验的标准。 我向大家推荐的这个国外网站,收集了来自世界各地编程者提供的正则表达式,...

    正则表达式在网页处理中的应用四则

    正则表达式(RegularExpression)为字符串模式匹配提供了一种高效、方便的方法。几乎所有高级语言都提供了对正则表达式的支持,或者提供了现成的代码库供调用。本文以ASP环境中常见的处理任务为例,介绍正则表达式的...

    c#使用正则表达式匹配字符串验证URL示例

    在System.Text.RegularExpression命名空间里,有正则表达式方法。 代码如下:using System.Collections.Generic;using System.Text;using System.Text.RegularExpressions; namespace RegexDemo{ class Program { ...

    javascript正则表达式参数/g与/i及/gi的使用指南

     后向引用 正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力。请回想一下,对一个正则表达式模式或部分模式两边添加圆括号将导致这部分表达式存储到一个临时缓冲区中。可以使用...

    RegularExpression.exe

    RegularExpression V2.305是一款十分方便的正则调试、测试软件,方便快捷,软件使用过程中可以、编码转换、正则匹配等功能,软件提供很多现有表达式并可以自定义保存正则表达式,是编程人员非常便捷的开发工具。...

    static-regexp-old:使用 c++11 模板的非常快的正则表达式

    静态正则表达式 使用 c++11 模板的非常快速的静态正则表达式。 用法 #include "regexp/regexp.hpp" using namespace SRX; // Equivalent to ^([a-z]+) RegularExpression&lt;Begin&gt;&gt; &gt; &gt; regexp; if (regexp.match...

    asp.net之验证控件课程讲解

    本篇要讲述的知识点如下: 数据验证介绍 纯客户端脚本验证 asp.net验证控件概述 RequiredFieldValidator控件 ...正则表达式 RegularExpressionValidator控件 CustomValidator控件 ValidationSummary控件 分组校验技术

    谈谈C# replace在正则表达式中的意义

    多少年来,许多的编程语言和工具都包含对正则表达式的支持,.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,而且它们也都与未来的Perl 5中的规则表达式兼容。  此外,regexp类还能够...

    RegularExpression04

    假设现在手机上有一条这样的信息,如果我想拨打电话给信息显示里面告知的手机号码,如果手机没有给我们讲号码处理出来,那么我们可能就需要先将号码抄下,再拨号出去,这样显得客户体验不好,所以正则表达式就派上用场了.

    把Regular Expression 转换为Non-deterministic Finite Automata(NFA)

    这个程序是把正则表达式用图形的方式表达出来。用户输入一个正则表达式,程序会自动为这个正则表达式画出相应的图形来。 这个程序的正则表达式支持所有的字母 “*”符号表示循环。 含有数字的正则表达式是不合法的。

Global site tag (gtag.js) - Google Analytics