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#
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章