标签:
正则表达式:就是字符串中字符出现的规则。
何时使用:验证一个字符串的格式/查找一篇文章中的关键字。
基本正则表达式:
正则表达式:”[a-z]”表示a到z的任意一个字符
正则表达式:”[a-z]+”表示由一个或多个a-z字符组成的字符串
如:我[去草],可以匹配:我去,我草;但不能匹配:我去草。
我[去草]+,可以匹配:我去,我草,我去草,我草草,我去去等
正则表达式 | 说明 |
[abc] | a、b、c中任意一个字符 |
[^abc] | 除了a、b、c的任意字符 |
[a-z] | a、b、c、...、z中任意的一个字符 |
[a-zA-Z0-9] | a~z、A~Z、0~9中任意一个字符 |
[0-9&&[^47]] | 0~9中除了4和7以外的任意一个字符,其中&&表示”与”的关系 |
注意:^仅在放在首位时代表除……之外,如果给^前加上其他字符,则其失效,变为普通字符;如:正则表达式”[12^34]”表示1、2、^、3、4中的任意一个字符而不是1、2或除3、4外的字符。
预定义字符集:就是将常用正则表达式简化为预定义的专门字符,即简化正则表达式用的特殊字符。
正则表达式 | 说明 |
. | 任意一个字符 |
\d | 任意一个数字字符,相当于[0-9] |
\w | 单词字符,相当于[a-zA-Z0-9_] |
\s | 空白字符,相当于[\t\n\x0B\f\r] |
\D | 非数字字符 |
\W | 非单词字符 |
\S | 非空白字符 |
注意:空白字符并不只是指空格,还包括制表符等。
正则表达式 | 说明 |
X? | 表示0个或1个X,如:我了?去 |
X* | 表示0个或任意多个X,如:我[了个]*去 |
X+ | 表示1个到任意多个X(大于等于1个X) |
X{n} | 表示n个X |
X{n,} | 表示n个到任意多个X(大于等于n个X) |
X{n,m} | 表示n个到m个X(含头含尾) |
如:QQ号码目前为5-12位的数字,验证QQ号码的正则表达式应该为:"\d{5,12}"。
座机号:3-4位区号,后跟-,后跟7-8位座机号,故验证座机号的正则表达式应该为:"\d{3,4}-\d{7,8}"。
分组:使用圆括号()分割正则表达式为多个子表达式。子表达式构成一个小整体。
为什么要对正则表达式分组?和数学公式一样。数学中的复杂公式,都会用圆括号分组公式中的各个部分,表示公式的逻辑结构,并控制计算的顺序。
什么时候使用?当正则表达式过于复杂,需要区分逻辑结构、避免歧义时。
如:检索手机号码:+86 13501234567
+86 可有可无 ?
+86与后面的号码之间空格可以没有或者有多个 *
电话号码为11位数字
故检索手机号码的正则表达式为:"(\+86)?\s*\d{11}"。
分组时可以使用 ”|” 表示 ”或” 关系,例如:匹配手机号码前面的区号:
(\+86|0086)表示:可以匹配”+86”或者”0086”
标签:
原文地址:http://www.cnblogs.com/carolineshen/p/5153764.html