正则表达式

正则表达式提供了一种高级的、但不直观的字符串匹配和处理的方法。它描述了一种字符串匹配的模式,可以用来判断一个字符串是否满足某种格式,或者一个字符串是否含有某个子串等。
字符集
     正则表达式中可以使用的用于匹配的字符集如表3.1 所示。
表3.1  字符集
字符
作用
.
匹配除 /n 以外的任何一个字符。
[ ]
匹配包含在方括号内的任何一个字符。
^
用在方括号中表示匹配除方括号中字符以外的任何字符。
示例:
.at :匹配以任意字符开头,后面为at 的字符串。如“cat ”、“bat ”、“#at ”等。
[a-z] :匹配任意一个小写字母(a 到z 之间的)。如“a ”、“c ”、“e ”等。
[aeiou] :匹配任意一个元音字母。
[a-zA-Z] :匹配任意一个大写或小写字母。
[^a-z] :匹配任何不在a 到z 之间的字符。
重复
     用于确定重复次数的字符如表3.2 所示。
表3.2  重复次数
字符
作用
*
表示重复 0 次或以上。
+
表示重复 1 次或以上。
表示重复 0 次或 1 次。
示例:
[a-zA-Z]* :匹配任意大小写字母构成的字符串,也可以是空字符串。如:“abc ”。
[0-9]+ :匹配任何由数字构成的字符串,该字符串至少包含一个字符。如:“1234 ” 。
[a-z0-9]? :匹配空字符串,或者一个小写字母或数字。
子表达式
     子表达式的格式和作用如表3.3 所示。
表3.3  子表达式
字符
作用
()
将多个字符作为一个子表达式。
示例:
(very )*large :匹配“large ”、“very large ”、“very very large ”等。注意very 后面的空格。
子表达式计数
     子表达式可以出现多次,子表达式的计数如表3.4 所示。
表3.4  子表达式计数
字符
作用
{n}
表示重复 n 次。
{m,n}
表示重复 m~n 次。
{m,}
表示重复 m 次以上。
示例:
(very ){1}  :匹配“very  ”。
(very ){1,3} :匹配“very  ”、“very very  ”、“very very very  ”。
(very ){1,} :匹配由一个或一个以上“very  ”构成的字符串。                         
指定字符串的开始和末尾
    字符串的开始和结束符如表3.5 所示。
表3.5  开始和结尾
字符
作用
^
指定以某个字符串开始。
$
指定以某个字符串结尾。
^ 和 $
表示精确匹配某个字符串。
示例:
^zhang :匹配以“zhang ”开头的任意字符串。如“zhangsan ”。
cn$ :匹配以“cn ”结束的任意字符串。如:“sina.com.cn ”。
^[a-z]$ :匹配只包含a 到z 之间任意一个字符的字符串。如:“a ”。
注意:如果一个模式不包括^ 和$ ,那么它与任何包含该模式的字符串匹配。
思考:^[a-z] 和[a-z]$ 分别匹配什么样的字符串?
分支
     表示分支的字符如表3.6 所示。
表3.6  分支
字符
作用
|
表示匹配多个模式串中的任意一个。
 
示例:
com|edu|net :匹配com 、edu 或net 。
匹配特殊字符 
     在匹配特殊字符的时候需要用到转义字符,转义字符如表3.7 所示。
表3.7  特殊字符
字符
作用
/
用来转义特殊字符 。
示例:
// :匹配一个反斜杠。
/. :匹配一个圆点。
常见用法举例
^[a-zA-Z][a-zA-Z0-9_]*$ :匹配以字母开头,由字母、数字和下划线组成的字符串。如:“abc_123 ”。
^[a-zA-Z0-9]{6,}$ :匹配由字母和数字组成,长度不少于6 位的字符串。如:“123456 ” 。
^[ 0-9]{4}-[0-9]{2}-[0-9]{2}$ :匹配格式为“xxxx-xx-xx ”的字符串,要求x 只能是数字。常用于匹配日期,如:“2007-05-01 ”。
^[a-zA-Z][a-zA-Z0-9_/-]*@([a-zA-Z0-9/-]+/.)+[a-z]{2,3}$ :常用于匹配Email 。要求@ 符号前面是以字母开头,由字母、数字、下划线或减号组成的字符串;@ 符号后面的域名可以包含多个字符串,每个字符串由字母、数字或减号组成;最后一级域名只能包含2 个或3 个字母(例如cn 、com 等)。
^0[0-9]{2,3}-[0-9]{7,8}$ :常用于匹配电话号码。要求区号由0 开始,包含3 到4 位数字,区号和电话号码之间用减号分隔,电话号码由7 位或者8 位数字组成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值