java使用正規表示式判斷手機號,固定電話,身份證,郵箱,url,車牌號,日期,ip地址,mac,人名等
版權宣告:本文為博主原創文章,如需轉載,請標明出處。 https://blog.csdn.net/alan_liuyue/article/details/78983474
簡介
1. 在實際專案中可能會遇到需要判斷一些常用的比較有規則性的字串是否正確,比如手機號、身份證、郵箱、車牌號等;
2. 使用傳統的java邏輯語句去逐一判斷往往得不到想要的效果,不僅程式碼多,而且速度也慢;
3. 所以,我們一般都會使用正規表示式去對這些字串進行判斷,下面介紹常用的一些正規表示式的字串判斷寫法;
專案實踐
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
/**
* 通過正則表達判斷是否正確的手機號,固定電話,身份證,郵箱,url,車牌號,日期,ip地址,mac,人名等.
*/
public class validateMatch {
/**
* 正則:手機號(簡單), 1字頭+10位數字即可.
*/
private static final String REGEX_MOBILE_SIMPLE = "^[1]\d{10}$";
private static final Pattern PATTERN_REGEX_MOBILE_SIMPLE = Pattern.compile(REGEX_MOBILE_SIMPLE);
/**
* 正則:手機號(精確), 已知3位字首+8位數字
* <p>
* 移動:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188
* </p>
* <p>
* 聯通:130、131、132、145、155、156、175、176、185、186
* </p>
* <p>
* 電信:133、153、173、177、180、181、189
* </p>
* <p>
* 全球星:1349
* </p>
* <p>
* 虛擬運營商:170
* </p>
*/
private static final String REGEX_MOBILE_EXACT = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|(147))\d{8}$";
private static final Pattern PATTERN_REGEX_MOBILE_EXACT = Pattern.compile(REGEX_MOBILE_EXACT);
/**
* 正則:固定電話號碼,可帶區號,然後至少6,8位數字
*/
private static final String REGEX_TEL = "^(\d{3,4}-)?\d{6,8}$";
private static final Pattern PATTERN_REGEX_TEL = Pattern.compile(REGEX_TEL);
/**
* 正則:身份證號碼15位, 數字且關於生日的部分必須正確
*/
private static final String REGEX_ID_CARD15 = "^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$";
private static final Pattern PATTERN_REGEX_ID_CARD15 = Pattern.compile(REGEX_ID_CARD15);
/**
* 正則:身份證號碼18位, 數字且關於生日的部分必須正確
*/
private static final String REGEX_ID_CARD18 = "^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9Xx])$";
private static final Pattern PATTERN_REGEX_ID_CARD18 = Pattern.compile(REGEX_ID_CARD18);
/**
* 正則:郵箱, 有效字元(不支援中文), 且中間必須有@,後半部分必須有.
*/
private static final String REGEX_EMAIL = "^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$";
private static final Pattern PATTERN_REGEX_EMAIL = Pattern.compile(REGEX_EMAIL);
/**
* 正則:URL, 必須有"://",前面必須是英文,後面不能有空格
*/
private static final String REGEX_URL = "[a-zA-z]+://[^\s]*";
private static final Pattern PATTERN_REGEX_URL = Pattern.compile(REGEX_URL);
/**
* 正則:yyyy-MM-dd格式的日期校驗,已考慮平閏年
*/
private static final String REGEX_DATE = "^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$";
private static final Pattern PATTERN_REGEX_DATE = Pattern.compile(REGEX_DATE);
/**
* 正則:IP地址
*/
private static final String REGEX_IP = "((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)";
private static final Pattern PATTERN_REGEX_IP = Pattern.compile(REGEX_IP);
/**
* 正則:車牌號
*/
private static final String REGEX_CAR = "^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{3,4}[A-Z0-9掛學警港澳]{1}$";
private static final Pattern PATTERN_REGEX_CAR = Pattern.compile(REGEX_CAR);
/**
* 正則:人名
*/
private static final String REGEX_NAME = "^([\u4e00-u9fa5]{1,20}|[a-zA-Z\.\s]{1,20})$";
private static final Pattern PATTERN_REGEX_NAME = Pattern.compile(REGEX_NAME);
/**
* 正則:mac地址
*/
private static final String REGEX_MAC = "([A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2}";
private static final Pattern PATTERN_REGEX_MAC = Pattern.compile(REGEX_MAC);
//封裝方法:
/**
* 驗證手機號(簡單)
*/
public static boolean isMobileSimple( String str) {
return isMatch(PATTERN_REGEX_MOBILE_SIMPLE, str);
}
/**
* 驗證手機號(精確)
*/
public static boolean isMobileExact( String str) {
return isMatch(PATTERN_REGEX_MOBILE_EXACT, str);
}
/**
* 驗證固定電話號碼
*/
public static boolean isTel( String str) {
return isMatch(PATTERN_REGEX_TEL, str);
}
/**
* 驗證15或18位身份證號碼
*/
public static boolean isIdCard( String str) {
return isMatch(PATTERN_REGEX_ID_CARD15, str) || isMatch(PATTERN_REGEX_ID_CARD18, str);
}
/**
* 驗證郵箱
*/
public static boolean isEmail( String str) {
return isMatch(PATTERN_REGEX_EMAIL, str);
}
/**
* 驗證URL
*/
public static boolean isUrl( String str) {
return isMatch(PATTERN_REGEX_URL, str);
}
/**
* 驗證yyyy-MM-dd格式的日期校驗,已考慮平閏年
*/
public static boolean isDate( String str) {
return isMatch(PATTERN_REGEX_DATE, str);
}
/**
* 驗證IP地址
*/
public static boolean isIp( String str) {
return isMatch(PATTERN_REGEX_IP, str);
}
/**
* 驗證車牌號
*/
public static boolean isCar( String str) {
return isMatch(PATTERN_REGEX_CAR, str);
}
/**
* 驗證人名
*/
public static boolean isName( String str) {
return isMatch(PATTERN_REGEX_NAME, str);
}
/**
* 驗證mac
*/
public static boolean isMac( String str) {
return isMatch(PATTERN_REGEX_MAC, str);
}
public static boolean isMatch(Pattern pattern, String str) {
return StringUtils.isNotEmpty(str) && pattern.matcher(str).matches();
}
//測試方法
public static void main(String[]args){
String car = "137888888888";
System.out.println(isMobileSimple(car));
}
}
總結
1. 以上例子包括了手機號、固定電話、身份證、郵箱、url、車牌號、日期、ip地址、mac、人名等的正規表示式驗證;
2. 正規表示式的寫法是有很多種的,找到合適的便可以,更多其他的寫法歡迎交流;
3. 實踐是檢驗認識真理性的唯一標準,試一試就知道好不好用了~~~
相關文章
- iOS_正規表示式判斷手機型號郵箱、手機號、身份證、暱稱、密碼等iOS密碼
- 最全正規表示式總結:驗證QQ號、手機號、Email、中文、郵編、身份證、IP地址等AI
- jQuery驗證手機號郵箱身份證的正規表示式(含港澳臺)jQuery
- Java正規表示式——驗證手機號和電話號碼Java
- js正規表示式驗證手機,郵箱,身份證JS
- java正規表示式替換手機號,身份證號處理 星號Java
- 驗證手機、郵箱、漢字、身份證、URL、IP地址等java程式碼工具類Java
- 郵箱地址正規表示式驗證
- swift 郵箱、密碼、手機號、身份證驗證正則Swift密碼
- 編寫正則:匹配郵箱 手機號 密碼以及身份證號密碼
- Python正規表示式提取車牌號Python
- jQuery如何用正規表示式驗證手機號、身份證號、中文名稱jQuery
- ORACLE中使用SQL的正規表示式判斷郵箱格式OracleSQL
- 轉:正規表示式判斷號碼靚號型別型別
- iOS 中使用正規表示式判斷身份證格式及銀行卡號格式是否正確(推薦)iOS
- 在Delphi中使用正規表示式校驗身份證號
- 驗證郵箱和ip格式的正規表示式
- 使用正規表示式判斷是否為手機號碼(簡單且實用)
- 【js基礎】判斷是否是合法郵箱地址(正規表示式的應用)JS
- js驗證手機號碼的正規表示式JS
- 正規表示式驗證郵箱及其解析
- 郵箱驗證正規表示式程式碼
- 直播平臺開發,電話號碼正規表示式
- 正規表示式驗證Ip地址(絕對正確)
- 身份證號碼的正規表示式及驗證詳解(JavaScript,Regex)JavaScript
- 郵箱驗證正規表示式例項程式碼
- js驗證郵箱的正規表示式程式碼JS
- IP地址的正規表示式
- 12月4號-Java正規表示式Java
- 郵箱/郵件地址的正規表示式及分析(JavaScript,email,regex)JavaScriptAI
- 利用ORACLE正規表示式判斷字串是否為日期格式Oracle字串
- js郵箱驗證正規表示式例項程式碼JS
- 驗證郵箱格式正規表示式程式碼例項
- vue.js帳號,密碼,郵箱和移動手機號碼正則驗證Vue.js密碼
- 驗證ip地址正規表示式程式碼例項
- Java格式化手機號和身份證號,中間使用星號*隱藏Java
- php與js方式驗證手機號碼和郵件地址的合法性,js驗證身份證號碼PHPJS
- QQ號碼驗證正規表示式程式碼