Java 常用正则表达式
2015-09-26 22:25
441 查看
Java 常用正则表达式
1. 身份证号码:
1) 身份证正则表达式(15位) ^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
forJava:
Pattern p = Pattern.compile("^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$");
------ ------ ------ 说明 start ------ ------ ------
15位身份证号码各位的含义:
1-2位省、自治区、直辖市代码;
3-4位地级市、盟、自治州代码;
5-6位县、县级市、区代码;
7-12位出生年月日,比如670401代表1967年4月1日,与18位的第一个区别;
13-15位为顺序号,其中15位男为单数,女为双数;
------ ------ ------ 说明 end ------ ------ ------
2) 身份证正则表达式(18位)^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$
forJava:
Pattern p = Pattern.compile("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{4}$");
------ ------ ------ 说明 start ------ ------ ------
18位身份证号码各位的含义:
1-2位省、自治区、直辖市代码;
3-4位地级市、盟、自治州代码;
5-6位县、县级市、区代码;
7-14位出生年月日,比如19670401代表1967年4月1日;
15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数;
18位为校验码,0-9和X。作为尾号的校验码,是由把前十七位数字带入统一的公式计算出来的,计算的结果是0-10,
如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。X是罗马数字的10,用X来代替10。
------ ------ ------ 说明 end ------ ------ ------
2. 电话号码:
1) 移动电话:
^((13[0-9])|(15[^4,\D])|(18[0-9]))\d{8}$
------ ------ ------ 说明 start ------ ------ ------
中国电信手机号码开头数字 133、1349、153、180、181、189
中国联通手机号码开头数字 130、131、132、145、155、156、185、186
中国移动手机号码开头数字 1340-1348、135、136、137、138、139、147、150、151、152、157、158、159、182、183、184、187、188
补充:14开头的号码以前为上网卡专属号段,如联通的是145,移动的是147等等。不过现在14开头的号码也可以使用语音通话等全部业务,不受限制。
------ ------ ------ 说明 end ------ ------ ------
forJava:
Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
2) 固定电话:
--------------- 区号-号码 -------------------
String regex1 = "\\(?(010|021|022|023|024|025|026|027|028|029|852)?\\)?-?\\d{8}";//3位区号,8位号码
String regex2 = "\\(?(0[3-9][0-9]{2})?\\)?-?\\d{7,8}";//4位区号
String regex3 = "(\\(?(010|021|022|023|024|025|026|027|028|029|852)?\\)?-?\\d{8})|(\\(?(0[3-9][0-9]{2})?\\)?-?\\d{7,8})";
--------------- 加上分机号 (\\-?[0-9]{1,4})? ------- 区号-号码-分机号 ---------------
String regex1 = "\\(?(010|021|022|023|024|025|026|027|028|029|852|)\\)?-?\\d{8}(\\-?[0-9]{1,4})?";//3位区号
String regex2 = "\\(?(0[3-9][0-9]{2})\\)?-?\\d{7,8}(\\-?[0-9]{1,4})?";//4位区号
String regex3 = "(\\(?(010|021|022|023|024|025|026|027|028|029|852|)\\)?-?\\d{8}(\\-?[0-9]{1,4})?)|(\\(?(0[3-9][0-9]{2})\\)?-?\\d{7,8}(\\-?[0-9]{1,4})?)";
3. IP地址:
(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}
forJava:
(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)){3}
4. 邮箱:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
forJava:
p = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
5. 日期:
------------- 年-月-日: ------------------
年:
//年份为四位,且不能是0000
([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]))
年-月-日
Pattern.compile("([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])))");//说明:
年份为四位,且不能是0000,之后是月日,未考虑闰年.
6. 中文:
[\u4e00-\u9fa5]
forJava:
p = Pattern.compile("^[\u4e00-\u9fa5]+$");
======================== 说明 ==================
1.
\w
---> 单词字符[a-zA-Z_0-9],即Java中的标识符
\w+
---> 一个或多个单词字符[a-zA-Z_0-9]{1,}
2.
[-+.]
---> -或+或.
单个字符
3.
X*
---> 零次或多次
X?
---> 零次或一次
X+
---> 一次或多次
4.
需要转义的特殊字符:
\
---> \\
[
---> \[
]
---> \]
(
---> \(
)
---> \)
{
---> \{
}
---> \}
.
---> \.
*
---> \*
?
---> \?
+
---> \+
^
---> \^
$
---> \$
|
---> \|
5. 常用正则表达式查询地址:
http://www.ostools.net/regex#
1. 身份证号码:
1) 身份证正则表达式(15位) ^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
forJava:
Pattern p = Pattern.compile("^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$");
------ ------ ------ 说明 start ------ ------ ------
15位身份证号码各位的含义:
1-2位省、自治区、直辖市代码;
3-4位地级市、盟、自治州代码;
5-6位县、县级市、区代码;
7-12位出生年月日,比如670401代表1967年4月1日,与18位的第一个区别;
13-15位为顺序号,其中15位男为单数,女为双数;
------ ------ ------ 说明 end ------ ------ ------
2) 身份证正则表达式(18位)^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$
forJava:
Pattern p = Pattern.compile("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{4}$");
------ ------ ------ 说明 start ------ ------ ------
18位身份证号码各位的含义:
1-2位省、自治区、直辖市代码;
3-4位地级市、盟、自治州代码;
5-6位县、县级市、区代码;
7-14位出生年月日,比如19670401代表1967年4月1日;
15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数;
18位为校验码,0-9和X。作为尾号的校验码,是由把前十七位数字带入统一的公式计算出来的,计算的结果是0-10,
如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。X是罗马数字的10,用X来代替10。
------ ------ ------ 说明 end ------ ------ ------
2. 电话号码:
1) 移动电话:
^((13[0-9])|(15[^4,\D])|(18[0-9]))\d{8}$
------ ------ ------ 说明 start ------ ------ ------
中国电信手机号码开头数字 133、1349、153、180、181、189
中国联通手机号码开头数字 130、131、132、145、155、156、185、186
中国移动手机号码开头数字 1340-1348、135、136、137、138、139、147、150、151、152、157、158、159、182、183、184、187、188
补充:14开头的号码以前为上网卡专属号段,如联通的是145,移动的是147等等。不过现在14开头的号码也可以使用语音通话等全部业务,不受限制。
------ ------ ------ 说明 end ------ ------ ------
forJava:
Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
2) 固定电话:
--------------- 区号-号码 -------------------
String regex1 = "\\(?(010|021|022|023|024|025|026|027|028|029|852)?\\)?-?\\d{8}";//3位区号,8位号码
String regex2 = "\\(?(0[3-9][0-9]{2})?\\)?-?\\d{7,8}";//4位区号
String regex3 = "(\\(?(010|021|022|023|024|025|026|027|028|029|852)?\\)?-?\\d{8})|(\\(?(0[3-9][0-9]{2})?\\)?-?\\d{7,8})";
--------------- 加上分机号 (\\-?[0-9]{1,4})? ------- 区号-号码-分机号 ---------------
String regex1 = "\\(?(010|021|022|023|024|025|026|027|028|029|852|)\\)?-?\\d{8}(\\-?[0-9]{1,4})?";//3位区号
String regex2 = "\\(?(0[3-9][0-9]{2})\\)?-?\\d{7,8}(\\-?[0-9]{1,4})?";//4位区号
String regex3 = "(\\(?(010|021|022|023|024|025|026|027|028|029|852|)\\)?-?\\d{8}(\\-?[0-9]{1,4})?)|(\\(?(0[3-9][0-9]{2})\\)?-?\\d{7,8}(\\-?[0-9]{1,4})?)";
3. IP地址:
(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}
forJava:
(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)){3}
4. 邮箱:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
forJava:
p = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
5. 日期:
------------- 年-月-日: ------------------
年:
//年份为四位,且不能是0000
([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]))
年-月-日
Pattern.compile("([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])))");//说明:
年份为四位,且不能是0000,之后是月日,未考虑闰年.
6. 中文:
[\u4e00-\u9fa5]
forJava:
p = Pattern.compile("^[\u4e00-\u9fa5]+$");
======================== 说明 ==================
1.
\w
---> 单词字符[a-zA-Z_0-9],即Java中的标识符
\w+
---> 一个或多个单词字符[a-zA-Z_0-9]{1,}
2.
[-+.]
---> -或+或.
单个字符
3.
X*
---> 零次或多次
X?
---> 零次或一次
X+
---> 一次或多次
4.
需要转义的特殊字符:
\
---> \\
[
---> \[
]
---> \]
(
---> \(
)
---> \)
{
---> \{
}
---> \}
.
---> \.
*
---> \*
?
---> \?
+
---> \+
^
---> \^
$
---> \$
|
---> \|
5. 常用正则表达式查询地址:
http://www.ostools.net/regex#
相关文章推荐
- Spring(六):Bean 的作用域
- 关于java中除0的问题
- 搭建JavaWeb项目时出现的问题
- 浅识异常
- Spring-声明式事务控制
- Java课程作业1
- 为什么eclipse改错后还是显示错误
- getResource()与decode()
- java并发编程学习:用 Semaphore (信号量)控制并发资源
- Java:多个数求和
- SpringMVC 流程(6)-- 常用注解
- 如何将java代码生成一个bat文件
- java程序优化
- Android Eclipse快捷键
- Java 静态代理和动态代理
- java静态代理和动态代理
- Java大数类
- java程序 输入10个数字并求和
- java多线程之生产者消费者经典问题
- JAVA_SE基础——32.this关键字调用本类的构造方法