最全的常用正则表达式大全
——
包括校验数字、字符、一些特殊的需求等等
一、校验数字的表达式
1
数字:
^[0-9]*$
2
n
位的数字:
^\d{n}$
3
至少
^\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,245)">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)$
二、校验字符的表达式
汉字:
^[\u4e00-\u9fa5]{0,245)">英文和数字:
^[A-Za-z0-9]+$
^[A-Za-z0-9]{4,40}$
长度为
3-20
的所有字符:
^.{3,20}$
由
26
个英文字母组成的字符串:
^[A-Za-z]+$
个大写英文字母组成的字符串:
^[A-Z]+$
个小写英文字母组成的字符串:
^[a-z]+$
由数字和
^[A-Za-z0-9]+$
由数字、
个英文字母或者下划线组成的字符串:
^\w+$
或
^\w{3,245)">中文、英文、数字包括下划线:
^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文、英文、数字但不包括下划线等符号:
^[\u4E00-\u9FA5A-Za-z0-9]+$
^[\u4E00-\u9FA5A-Za-z0-9]{2,245)">可以输入含有
^%&'
,;=?$\"
等字符:
[^%&',;=?$\x22]+
禁止输入含有
~
的字符:
[^~\x22]+
三、特殊需求表达式
Email
地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名:
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
InternetURL
:
[a-zA-z]+://[^\s]*
或
^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
手机号码:
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
电话号码
(
"XXX-XXXXXXX"
、
"XXXX-XXXXXXXX"
"XXX-XXXXXXXX"
"XXXXXXX"
和
"XXXXXXXX)
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
国内电话号码
0511
-
4405222
021
87888822
)
\d{3}-\d{8}|\d{4}-\d{7}
身份证号
(15
位、
18
位数字
^\d{15}|\d{18}$
短身份证号码
(
数字、字母
x
结尾
^([0-9]){7,18}(x|X)?$
^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
帐号是否合法
字母开头,允许
5-16
字节,允许字母数字下划线
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密码
以字母开头,长度在
6~18
之间,只能包含字母、数字和下划线
^[a-zA-Z]\w{5,17}$
强密码
必须包含大小写字母和数字的组合,不能使用特殊字符,长度在
8-10
之间
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
日期格式:
^\d{4}-\d{1,2}-\d{1,2}
一年的
12
个月
01
~
09
和
1
~
^(0?[1-9]|1[0-2])$
一个月的
31
天
31
^((0?[1-9])|((1|2)[0-9])|30|31)$
钱的输入格式:
1.
有四种钱的表示形式我们可以接受
:
"10000.00"
"10,000.00"
和没有
"
分
"
的
"10000"
^[1-9][0-9]*$
2.
这表示任意一个不以
0
开头的数字
但是
这也意味着一个字符
"0"
不通过
所以我们采用下面的形式:
3.
一个
或者一个不以
.
我们还可以允许开头有一个负号:
^(0|-?[1-9][0-9]*)$
4.
这表示一个
或者一个可能为负的开头不为
的数字
让用户以
开头好了
把负号的也去掉
因为钱总不能是负的吧
下面我们要加的是说明可能的小数部分:
^[0-9]+(.[0-9]+)?$
20
5.
必须说明的是
小数点后面至少应该有
位数
所以
"10."
是不通过的
"10"
"10.2"
是通过的:
21
6.
这样我们规定小数点后面必须有两位
如果你认为太苛刻了
可以这样:
22
7.
这样就允许用户只写一位小数
下面我们该考虑数字中的逗号了
我们可以这样:
^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,245)">23
8.1
到
3
个数字
后面跟着任意个
逗号
+3
逗号成为可选
而不是必须:
^([0-9]+|[0-9]{1,[0-9]{3})*)(.[0-9]{1,245)">24
备注:这就是最终结果了
别忘了
"+"
可以用
"*"
替代如果你觉得空字符串也可以接受的话
奇怪
为什么
?)
最后
别忘了在用函数时去掉去掉那个反斜杠
一般的错误都在这里
25
xml
文件:
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
26
中文字符的正则表达式:
[\u4e00-\u9fa5]
27
双字节字符:
[^\x00-\xff]
(
包括汉字在内,可以用来计算字符串的长度
一个双字节字符长度计
2
,
ASCII
字符计
1))
28
空白行的正则表达式:
\n\s*\r
可以用来删除空白行
)
29
HTML
标记的正则表达式:
<(\S*?)[^>]*>.*?</\1>|<.*? />
网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力
)
30
首尾空白字符的正则表达式:
^\s*|\s*$
(^\s*)|(\s*$)
可以用来删除行首行尾的空白字符
包括空格、制表符、换页符等等
)
,非常有用的表达式
腾讯
QQ
号:
[1-9][0-9]{4,}
腾讯
QQ
号从
10000
开始
32
中国邮政编码:
[1-9]\d{5}(?!\d)
中国邮政编码为
6
位数字
33
IP
\d+\.\d+\.\d+\.\d+
提取
IP
地址时有用
)
34
((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
由
@
飞龙三少
提供
感谢共享
)