正则表达式基础-元字符
时间:2009-12-15
来源:互联网
在上一节(正则表达式基础),我们通过基本的了解见识到一个比较长的正则表达,下面就通过这个正则来学习最基本的正则表达的语法。下面来解析邮件地址的第一部分:^[_\.0-9a-z-]+,它包括几个知识点:元字符,类别等
在上一节中我们知道(用户名:可能以字母或者数字开始),这个就对应(^[_\.0-9a-z-]+),这一部分又可以拆分为三部分:
首先是“^”,这个符合在正则表示以什么开始。这是正则中的元字符之一。
再一个:“[]”,这个中括号表示类别,相当于一个集合。正则中有几个常见的类别。
还有一个:“-”中括号中的这个连字符表示一个范围。”a-z”就表示,所有的小写字母。同样”0-9” 就表示所有的数字。你可能还看到这里有个下划线“_”,这没有什么特别的意义,就是说用户名中可以包含下划线。
再一个:”\.”表示什么呢?因为”.”在正则中有特别的意义(匹配除换行符外的所有单个的字符),所以为了在邮件地址中也能匹配到包含”.”的用户名,就需要对”.”进行转义处理(“\.”)。
最后一个:”+”,这个”+”也是属于元字符之一,它表示前面的字符出现1次或n次。一般来说元字符用于类别([])的前面或者后者用来修饰一个类别(集合)。
补充说明:当”^”元字符在[]类别中是表示除…之外,如’[^a-z]’表示除小写字母外。当我们在读正则表达式的时候,先读元字符所表达的意义。如以…开头或者以…结尾之类。
下面来解析邮件地址的第二部分:@([0-9a-z][0-9a-z-]+\.)
第一:”@”符号必不可少,它跟在用户名后面。
第二:”()”这在正则中表示一个子表达式,默认对其进行编号,索引为1开始。如果要引用这个子表达式,就这可以这样表示:\\1。如果要引用整个正则,可以用:\\0表示
第三:子表达式的两个类别似乎不要讲了,跟前面的一样的表示范围。
补充说明:当”+”没有在[]之后出现,它只表示顺序上的出现位置,即后面跟什么东西:@([0-9a-z][0-9a-z-]+\.)+,我把它理解为一个加号,不知道对不对?
下面来解析邮件地址的第三部分:[a-z]{2,4}$
第一:用一个类别来表示一个范围:所有的小写字母
第二:{2,4},这个表示出现的字符个数,它有三种情况:{n}、{n,}、{n,m}。以下分别说明:
{n}:这里的n是一个正整数,匹配前面的n个字符
{n,}:这里的n是一个正整数,匹配至少n个前面的字符
{n,m}:这里的n和m都是正整数,匹配至少n个最多m个前面的字符
邮件地址的域名格式如下:
=700) window.open('http://www.helpphp.cn/wp-content/uploads/2009/12/domain_format.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" > domain_format (来自万网的域名注册页面)
可以看出,域名后缀至少有2个,最多4个
第三:$ 这个也是元字符之一,表示以什么结尾,一般用在类别的后面来修饰范围
其它元字符的意义
大括号:大括号用来精确指定匹配元字符出现的次数
加号:”+”字符用来匹配元字符前的字符出现一次或者多次
星号:”*”字符用来匹配元字符前的字符出现零次或者多次
问号:”?”字符用来匹配元字符前的字符出现零次或者1次
到此一个完整的用于邮件地址验证的正则表达式就完成了。
不知道这样的教程有没有误导新手,还请高手们指正呀...
在上一节中我们知道(用户名:可能以字母或者数字开始),这个就对应(^[_\.0-9a-z-]+),这一部分又可以拆分为三部分:
首先是“^”,这个符合在正则表示以什么开始。这是正则中的元字符之一。
再一个:“[]”,这个中括号表示类别,相当于一个集合。正则中有几个常见的类别。
还有一个:“-”中括号中的这个连字符表示一个范围。”a-z”就表示,所有的小写字母。同样”0-9” 就表示所有的数字。你可能还看到这里有个下划线“_”,这没有什么特别的意义,就是说用户名中可以包含下划线。
再一个:”\.”表示什么呢?因为”.”在正则中有特别的意义(匹配除换行符外的所有单个的字符),所以为了在邮件地址中也能匹配到包含”.”的用户名,就需要对”.”进行转义处理(“\.”)。
最后一个:”+”,这个”+”也是属于元字符之一,它表示前面的字符出现1次或n次。一般来说元字符用于类别([])的前面或者后者用来修饰一个类别(集合)。
补充说明:当”^”元字符在[]类别中是表示除…之外,如’[^a-z]’表示除小写字母外。当我们在读正则表达式的时候,先读元字符所表达的意义。如以…开头或者以…结尾之类。
下面来解析邮件地址的第二部分:@([0-9a-z][0-9a-z-]+\.)
第一:”@”符号必不可少,它跟在用户名后面。
第二:”()”这在正则中表示一个子表达式,默认对其进行编号,索引为1开始。如果要引用这个子表达式,就这可以这样表示:\\1。如果要引用整个正则,可以用:\\0表示
第三:子表达式的两个类别似乎不要讲了,跟前面的一样的表示范围。
补充说明:当”+”没有在[]之后出现,它只表示顺序上的出现位置,即后面跟什么东西:@([0-9a-z][0-9a-z-]+\.)+,我把它理解为一个加号,不知道对不对?
下面来解析邮件地址的第三部分:[a-z]{2,4}$
第一:用一个类别来表示一个范围:所有的小写字母
第二:{2,4},这个表示出现的字符个数,它有三种情况:{n}、{n,}、{n,m}。以下分别说明:
{n}:这里的n是一个正整数,匹配前面的n个字符
{n,}:这里的n是一个正整数,匹配至少n个前面的字符
{n,m}:这里的n和m都是正整数,匹配至少n个最多m个前面的字符
邮件地址的域名格式如下:
=700) window.open('http://www.helpphp.cn/wp-content/uploads/2009/12/domain_format.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" > domain_format (来自万网的域名注册页面)
可以看出,域名后缀至少有2个,最多4个
第三:$ 这个也是元字符之一,表示以什么结尾,一般用在类别的后面来修饰范围
其它元字符的意义
大括号:大括号用来精确指定匹配元字符出现的次数
加号:”+”字符用来匹配元字符前的字符出现一次或者多次
星号:”*”字符用来匹配元字符前的字符出现零次或者多次
问号:”?”字符用来匹配元字符前的字符出现零次或者1次
到此一个完整的用于邮件地址验证的正则表达式就完成了。
不知道这样的教程有没有误导新手,还请高手们指正呀...
作者: httpcn 发布时间: 2009-12-15
怎么没人发表下意见呢
作者: httpcn 发布时间: 2009-12-16
还不错,继续补充
作者: haowubai 发布时间: 2009-12-16
《php视频教程》每周一期,我喜欢,我支持!
作者: wds2008 发布时间: 2009-12-29
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28