正则表达式
基本规则
<ol>
<li>普通字符
字母、数字、汉字、下划线以及都变章节没有特殊定义的标点符号,都是普通字符。表达式“c”,在匹配“abcde”是,匹配成功。</li>
<li>简单的转义字符
匹配特殊字符和转义字符是需要添加“\”。“^”匹配“^”。 表达式“$d”,在匹配“abc$de”时,匹配成功,匹配到的内容是“$d”,位子是开始于3,结束语5
</li>
<li>能够与多种字符匹配的表达式
"\d":任意一个数字,0~9中任意一个
"\D":匹配所有的非数字字符;
"\w":任意一个字母、数字或下划线,也就是AZ、az、0~9和_中任意一个;
"\W":用于匹配所有"\w"不匹配的字符
"\s":包括空格、制表符、换页符等空白字符之中的任意一个
"\S":用于匹配除单个空格符之外的所有字符
".":小数点可以匹配除了换行符以外的任意字符
</li>
<li>
自定义能够匹配多种字符的表达式
[ ]包含一系列字符,能够匹配其中任意一个字符。[^]包含一系列字符,能够匹配其中字符之外的任意一个字符。只能匹配其中一个
不是多个
"[ab5@]":能够匹配a、b或5、@。
"[^abc]":能够匹配a、b、c之外的任意一个字符
"[f-k]":匹配f-k之间的任意一个字母
"[^A-F0-3]":匹配A-F、0-3之外的任意一个字符
</li>
<li>
修饰匹配次数的特殊符号
使用方法:“次数修饰”放在“被修饰的表达式”后边
"{n}":表达式重复n次。比如:"\w{2}":相当于"\w\w","a{5}"相当于"aaaaa"。
"{m,n}":表达式至少重复m次,最多重复n次."ba{1,3}"相当于"ba","baba","bababa"
"{m,}":表达式至少匹配m次
"?":匹配表达式0次或者1次,相当于{0,1},比如:"a[cd]?"可以匹配"a","ac","ad"
"+":表达式至少出现1次,相当于{1,}。"a+b"可以匹配"ab","aab"等
"*":表达式不出现或者出现任意次数。
</li>
<li>其他代表抽象意义的特殊符号
"^"字符串开始的地方匹配,不匹配任何字符
"$"与字符串结束的地方匹配,不匹配任何字符
"\b"匹配一个单词边界。也就是单词和空格之间的位置,不匹配任何字符。
"\B"匹配非单词边界。即左右两边都是"\w"范围或者左右两边都不是
"|"表示左右两边表达式之间的“或”关系,匹配左边或者右边
"()"括号中的表达式可以作为整体被修饰。
例如:
"^aaa"在匹配"xxx aaa xxx"是失败的。"aaa"不在字符串开始的位置。匹配"aaaxxxxx"成功
</li>
</ol>
一些高级规则
<ol>
<li>匹配次数中的贪婪与非贪婪
匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配
例如在匹配文本"dxxxdxxxd"时,"(d)(\w+)"其中"\w+"将匹配第一个"d"之后的所有字符
"(d)(\w+)(d)"其中"\w+"匹配"xxxdxxx"
如果在修饰匹配次数的特殊符号后再加上一个"?",则使匹配不定次数的表达式尽可能少的匹配,是可匹配可不匹配的表达式,尽量不匹配
</li>
<li>反向引用
表达式在匹配是,表达式引擎会将小括号"()"包含的表达式所匹配到的字符串记录下来。在获取匹配结果的时候,小括号包含的表达式
所匹配的字符串可以单独获取。引用方法""再加上一个数字。"\1"表示引用第1对括号内匹配到的字符串
例如:“('|")(.*?)(\1)” 在匹配“'hello',"World"”是匹配成功。匹配到的第一个内容是“'Hello'”
</li>
</ol>
正则表达式举例
<pre>
1.校验密码强度
密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间
^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$
2.校验中文
^[\u4e00-\u9fa5]{0,}$
- 由数字、26个英文字母或下划线组成的字符串
^\w+$
4.校验E-Mail地址
[\w!#$%&'+/=?^_{|}~-]+(?:\.[\w!#$%&'*+/=?^_
{|}~-]+)@(?:\w?.)+\w?
5.校验身份证
^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
6.“yyyy-mm-dd“ 格式的日期校验
([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))
7.校验金额
^[0-9]+(.[0-9]{2})?$
</pre>
网友评论