三十九个正则表达式
这是我的分析,由于学的不好,可能分析的不是很好。希望大家多多指正。谢谢~~
-----------写在前面的话
1、非负整数:^\d+$
解析:
/d:指0~~9,+表示 一个以上,形如{1,}。
故表示以什么什么开始,以什么结尾。这个什么什么指,0~9这十个数出现1个以上,则匹配成功。
2、正整数:^[0-9]*[1-9][0-9]*$
解析:
0需要单独的独立出来,牵涉到了数字0;
为了要开头都是【0-9】*呢?
因为,可以要求数字是如:003;
为什么又可以有多个,也可以没有呢?
因为可以这样的,如:
字符串匹配要求,至少要包含一个0~9之间的一个数字。
那为什么结尾要求可以包含0~9呢?
因为可以有这些数字,如10,102,1002,1030等等数字。
3、非正整数:^((-\d+)|(0+))$
(0+)可以包含多个0。如0,000。等等
(-\d+)要求1个符号和多个十进制数字。
开始^与结尾&都是针对同一个字符串的。即:对同一个字符串的要求。
4、负整数:^-[0-9]*[1-9][0-9]*$
解析:负整数有-和0~~9组成。
- 对符号做了要求,一定要开头。
中间同上例,可以是-002,也可以是-00200000等等了。可以有多个零的出现。
5、整数:^-?\d+$
解析:整数有正数、负数和0之分。而负数牵涉到了符号问题。
故开头,^-? 要求要么有且只有一个“-”,要么没有。
\d.要求数字是十进制数字,数量上至少 有一个。结尾自然也是它了。
是什么6、非负浮点数:^\d+(\.\d+)?$
解析:非负浮点数主要有整数部分、小数部分(可有可无)、和小数点(可以有也可以没有)组成。
^\d+ 有1个以上的十进制数字,以它做开头。
\.\d+ 对点进行了转移,因为在元子符中点是有意义的。要求有小数点。
\d+ 要求十进制数字得有一个以上。
(\.\d+)? 对(点和十进制数字)要求是要么有一个,要没没有。相当进行选择。浮点数怎么能有两个小数点呢?大家见过200.32.25这样的浮点数吗?
(\.\d+)?$ 让他作为结尾部分。
7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)| ([0-9]*[1-9][0-9]*))$
解析:
这个模式的设计思路是讲 浮点数分成了三种形式:
整数部分是0的,小数部分是0的,以及不带小数点的。
观察知道,^与$针对同一个字符串,所以中间是对字符串的要求了。
|表示分支结构。因此这里面有三个选项。可以选择任何一种。
(0-9)+\.[0-9]*[1-9][0-9]*) ([0-9]*[1-9][0-9]*\.[0-9]+)
([0-9]*[1-9][0-9]*)
下面一部分一部分分析。
分析第一部分:
(0-9)+ 0~~9这是个十进制数字,至少有一个。
\. 表示小数点。
[0-9]*[1-9][0-9]* 前面说过了。举几个实际的例子。0003000,402446都行。
把这个式子综合起来,大致表示如下。
03566.45055。。但不能是这种形式的。5.000。可以是0.1224等等了。
分析第二部分:
跟前面差不多。不再冗述了。但不能是这种形式。0.1224.可以是5.000。。
分析第三部分:
直接是正整数了,没有小数点。
8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$
解析:
针对同一个字符串来进行匹配的。有两个分支结构进行选择。负浮点数和0浮点数。
第一部分,(-\d+\.\d+)?:
组成部分: 符号- ;;;十进制数字,至少一个;;;小数点.;;;十进制数字,至少一个;;;如:321.123
第二部分,(0+(\.0+)?):
组称部分: 0,至少一个,多不上限;;;
(\.0+),,小数点 加上多个0,至少 一个。如:0.000;;000.00;
这个貌似有点缺点、好像要求必须有小数点了。
9、负浮点数:^(-((正浮点数正则式)))$
解析:不冗述
10、英文字符串:^[A-Za-z]+$
解析:
开头与结束都针对同一个字符串。
[A-Za-z]+,从大小字母中选择字符,不限制数量。但至少得有一个。
11、英文大写串:^[A-Z]+$
解析:
开头与结尾都针对同一个字符串。
[A-Z]+,至少得有一个大写字母。
12、英文小写串:^[a-z]+$
解析:
不冗述了。
13、英文字符数字串:^[A-Za-z0-9]+$
解析:
[A-Za-z0-9]+,至少包含一个大小写字母或者阿拉伯数字。
14、英数字加下划线串:^\w+$
解析:
\w+ 包含,数字、字母、下划线。
15.EMAIL: /^\w+@\w+(\.\w+){0,3}$/
解析:
分成以下几部分吧。
^\w+ 可以是字母数字以及下划线,不允许是其他字符,至少得有一个做开始。
@必须得有。
\w+,接下来得至少有一个字母数字下划线,下面简称w。
(\.\w+) 一个点 和至少一个的w。
(\.\w+){0,3}$,表示,一个点和至少一个w 这个组合可以出现0次到三次之间。也许我们会郁闷为什么是0次到3次之间呢?看例子:
aaaaaaaa@sina.csdn.qq是吧。
那为什么也可以出现0次呢?
例如:b@c。。。可能有这种邮箱吧。
16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$
解析:分成几部分吧。
#1 ^[a-zA-Z]+ 表示,,这一小块是做开头的,其中呢,大小写字母至少得有一个。
#2 ://,一定得包含。这是URL的基本格式。
#3 (\w+ (-\w+)*):
这是个嵌套。下面最外层成为第一层。依此类推。
第一层就是圈了一个范围。
\w+ 至少得有一个数字字母下划线。
第二层可以有,也可以没有。要是有的话得这种形式。
-\w+ 表示,包含一个连接线 和至少一个字母数字下划线。
那么第二层综述起来,就是得包含一个数字字母下划线和不限制数量的(连接符和至少一个数字字母下划线)小模块。如:abc-abc。。。
#4(\.(\w+(-\w+)*))* 这一组合 可有可无。有的话,得包含一个.和一个小模块。在#3中说过了这个模块。
例如:空,因为这个(\.(\w+(-\w+)*))*没有。
.abc-abc ,因为(\.(\w+(-\w+)*))*都有。
.abc,因为(-\w+)*没有。。。
#5 (\?\s*)?$ 组合成员:\要么没有要么有一个。\s*空字符可以有可以没有。
这个组合要么有,要么没有。用这个模块来作为结尾部分。例如:
1)\没有,\s有。是“ ”
2)\有,\s没有。是“\”
3)\有,\s也有。是"\ "。
综述。Url如:
Htpp://abc-abc.abc-abc.abc-abc\ 。
或者:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]* ([^<>\"\'])*$
解析:
#1 ^http:\/\/,这是表示....其中\/是为了定界符也是/,进行转意防止系统以为此位置就是界限了。
#2[A_Za-z0-9]+\. ,至少得包含一个大小写字母和数字,然后再加上一个.
#3 [A_Za-z0-9]+,至少得包含一个数字字母下划线。
#4 [\/=\?%\-&_~`@[\]\':+!]* ,这些字符,/ = ? % - & ~ ' @ [ ] " : + !
如果要使用的话选择一个。
#5([^<>\"\'])$,,可以有,可以没有。有的话,让它作为结束标记。但是除了这些字符都可以的 < > ' "。
17、:^[1-9]\d{5}$
解析:以1~9这里面的数字,选择一个做开始,然后
\d{5}指5个十进制数字做结尾。
18、中文:^[\u0391-\uFFE5]+$
解析:
这是中文的编码。会用即可。
19、电话号码:
^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|
0\d{2,3}-)?[1-9] \d{6,7}(\-\d{1,4})?$
解析:
我们跟着作者的思路走吧。电话有四种写法。
(021)11234567-1234
021-*******
(0021)1234567-1234
0021-1234567-1234
分析:
#1 \(\d{2,3}\)中,\( 和 \)对( 、)进行了转意。因为元字符中有()。
所以进行了转义,表示要求显示出()。里面的\d{2,3}是要求十进制数字要求有2个~3个。 显示举例是(021)
#2 \d{3}\-。对于不确定的字符也可以进行转义,如连接字符-。所以表示三个十进制数字加上一个-。如021-
((#1) | (#2) )?。表示在#1和#2中选择出来一个,同时要求要么包含一次,要么一次也没有。
#3 \( 0\d{2,3} \) 。对括号进行转移,正常显示()。0开头,组合2个到3个十进制数字。 如(0021)。
#4 0\d{2,3}- 。0开头,后天包含有2位到3位的数字。
如 :0021-。
(#3|#4)?。在#3、#4中选择一个,然后要么显示,要么不显示。
#5 [1-9],在1-9中选择一个数。
#6 \d{6,7},包含6~7个十进制数字。
#7 (\-\d{1,4})? $ ,包含-和1~4位十进制数字,这个模块要么有一个、要么没有。用这个小模块做尾部。
综述,举个例子:
(021)11234567-1234
20、手机号码13开头:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$
解析:
#1 \((\d{2,3})\) 对括号进行转移,防止被当成了元字符。显示结果是(2~3位数字)。
发布评论