您的位置:首页 > 编程语言 > Java开发

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#
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: