正则的一些例子

/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/ 谁能帮我具体解释下这个正则表达式的含义呢
/^(13[0-9]|15[0-9]|18[0-9]|14[0-9])\d{8}$/ 还有这个也帮忙解释下,??


^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+
^ 表示开头.
([a-zA-Z0-9_-])+ a-z A-Z 0-9 的字符和下划线_,横线- (实际上这里不用加圆括号)
+ 表示这样的字符有 一个或n个(也就是大小写字母数字下划线横线有1个或n个
@ 就是@符号..表示接下来是个@符号
([a-zA-Z0-9_-])+ 然后又是大小写字母数字下划线横线有1个或n个
\.表示小数点 .
\.[a-zA-Z0-9_-] 匹配 小数点后边跟 大小写字母数字下划线横线,这里有个小错误就是没有指定重复次数所以只能匹配一个字符,比如 123@qq.com 只能匹配到 123@qq.c
(\.[a-zA-Z0-9_-])+ 这里表示可以有1次或n次重复的情况 比如 123@qq.a.b.c 
修改正确:
^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+
\w相当于[a-zA-Z0-9] 所以可以简写一下 ^[\w_-]+@[\w_-]+(\.[\w_-]+)+
^(13[0-9]|15[0-9]|18[0-9]|14[0-9])\d{8}$
这个是开头三位数字 13n 或 15n 或 18n 或 14n,其中n取值是0~9
\d{8} 表示 8个数字.
可以简化一下..
^1(3|5|8|4)\d{9}$
+++++++++++++++++++++++++++++++
正则表达式 
又称规则表达式包括四个部分,定界符、元字符、量词、模式修正符。 
1.定界符:即//; $reg = ‘//’;在定界符中编写相应的规则。 
2.元字符:即筛选规则的主要部分,可以填写原字符进行筛选,如用 
$reg = ‘/a/’;筛选出a。也可以用以下转义字符,来表示一定的范围。 
\w 小写w表示筛选的内容就是字母、数字、下划线范围中的任意一个 
\W 与小写w相反。 
\d表示数字(0-9)范围中的任意一个 
\D表示数字范围之外(除了数字之外的)任意一个 
\s ,表示一个空格 
\S,除了空格之外的任意一个字符 
**\b,boundary,国界线,在正则表达式中表示单词之间的边界 
\B,表示除了字符边界线之外的任意一个字符** 
[]中括号,表示范围中的一个如[a-z] 
. ,英文的点号,表示除了换行符(\n)之外的任意一个字符 
| 表示或者 
\x{4e00} - \x{9fa5}表示中文的范围ACSII码 注意需要在正则表达式之后加上/u模式符,使其转换为utf8国际编码。 
3.量词 
*:表示0个或多个 
+:表示至少1个 
?:表示0个或1个 
注意 
?比较特殊,如果?放在元字符后面,表示量词,也就是匹配的数量,如果?放在量词后面,也是将贪婪模式转换成懒惰模式的意思 
^ $,^表示开始的位置,$表示结束的位置 
4.模式修正符 
书写在正则表达式的最后 
即$reg = ‘//i’; 
1.i –即ignore 即忽视大小写 
2.U –将默认的贪婪模式转换为懒惰模式,即读取一个就停止 
贪婪模式是尽可能多的读。 
3.u,采用utf-8编码对字符进行转码 
4.s,表示万能点模式,默认情况下,.英文点号匹配除了换行符\n之外的任意字符,采用万能点模式之后,英文点号匹配任意的字符包括\n换行 
5./m,multi 多行模式(了解即可)多行模式,就是将换行的地方看做是一个新的字符串 
正则表达式的一些要点: 
捕获与分组通过小括号进行捕获与分组,在匹配后的数组中将分组返回,下标为0的返回原匹配字符,第一个下标返回第一个()中的内容,以此类推。 
(?exp)匹配exp,并捕获文本到名称为name的组里 
(?:exp) 匹配exp,不捕获匹配的文本 
(?=exp) 匹配exp前面的位置 
(?<=exp) 匹配exp后面的位置 
(?!exp) 匹配后面跟的不是exp的位置 
(?<!exp) 匹配前面不是exp的位置 
如helloworld 
第一个(?< name>world)匹配world存入name键中 
(?:world)筛选匹配字段,helloworld,但不单独分组。 
(?=world)即hello并分组 
(?<=world)相反

以上都应有PHP函数preg_match()或preg_match_all()进行匹配 
reg即规则str 即要筛选的字符串 
$match 筛选后的结果 
两个函数,前者筛选出一个就停止,后者筛选全局。 
下面是一些常用的正则表达式在这里分享给大家

中文(utf8)

[\u4e00-\u9fa5]     //通用
[\x{4e00}-\x{9fa5}]     // PHP
1
2
url:

((http|https|ftp|telnet|news):\/\/)?([a-z0-9_\-\/\.]+\.[][a-z0-9:;&#@=_~%\?\/\.\,\+\-]+)
^(([a-zA-Z]+)(:\/\/))?([a-zA-Z]+)\.(\w+)\.([\w.]+)(\/([\w]+)\/?)*(\/[a-zA-Z0-9]+\.(\w+))*(\/([\w]+)\/?)*(\?(\w+=?[\w]*))*((&?\w+=?[\w]*))*$
1
2
email:

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
^[a-zA-Z0-9][a-zA-Z0-9._-]*\@[a-zA-Z0-9]+\.[a-zA-Z0-9\.]+$
1
2
电话:

\d{3}-\d{8}|\d{4}-\d{7}
^(((010)|(021)|(0\d3,4))( ?)([0-9]{7,8}))|((010|021|0\d{3,4}))([- ]{1,2})([0-9]{7,8})$
1
2
手机:

^((13[0-9])|147|(15[0-35-9])|180|182|(18[5-9]))[0-9]{8}$
1
qq:

[1-9][0-9]{4,}
1
邮编:

^[1-9]\d{5}$
1
身份证:

\d{15}|\d{18}
^(([0-9]{15})|([0-9]{18})|([0-9]{17}x))$
1
2
IP:

^((([1-9])|((0[1-9])|([1-9][0-9]))|((00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))))\.)((([0-9]{1,2})|(([0-1][0-9]{2})|(2[0-4][0-9])|(25[0-5])))\.){2}(([1-9])|((0[1-9])|([1-9][0-9]))|(00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))$
1
时间:时分秒

^(([1-2][0-9]{3}-)((([1-9])|(0[1-9])|(1[0-2]))-)((([1-9])|(0[1-9])|([1-2][0-9])|(3[0-1]))))( ((([0-9])|(([0-1][0-9])|(2[0-3]))):(([0-9])|([0-5][0-9]))(:(([0-9])|([0-5][0-9])))?))?$
1
HTML: 
制表符,换行符,回车符

[\t\n\r]+
1
html标签:

<([\w-]+?)[^>]*>.*?</\1>|<[\w-]+?[^>]*/>
1
script:

<script.*?<\/script>
1
连接:

/<a .*?href="(.*?)".*?>/is
1
1 数字:`^[0-9]*$`
2 n位的数字:`^\d{n}$`
3 至少n位的数字:`^\d{n,}$`
4 m-n位的数字:`^\d{m,n}$`
5 零和非零开头的数字:`^(0|[1-9][0-9]*)$`
6 非零开头的最多带两位小数的数字:`^([1-9][0-9]*)+(.[0-9]{1,2})?$`
7 带1-2位小数的正数或负数:`^(\-)?\d+(\.\d{1,2})?$`
8 正数、负数、和小数:`^(\-|\+)?\d+(\.\d+)?$`
9 有两位小数的正实数:`^[0-9]+(.[0-9]{2})?$`
10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
11 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13 非负整数:^\d+$ 或 ^[1-9]\d*|0$
14 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
20 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
21 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
22强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
posted @ 2017-09-11 13:48  蜗牛使劲冲  阅读(5)  评论(0编辑  收藏  举报  来源