Java 常用正则表达式

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#
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值