手機號碼、郵箱匹配正則表示式java實現練手
概念:正則表示式就是用某種模式去匹配一類字串的一個公式。它由一些普通字元和一些元字元(metacharacters)組成。普通字元包括大小寫的字母和數字,而元字元則具有特殊的含義。
正則表示式的基礎語法為: “^([]{})([]{})([]{})$”。
大致意思是:正則字串 = “開始([包含內容]{長度})([包含內容]{長度})([包含內容]{長度})結束”。 今天我學習了一下簡單的基礎知識,嘗試寫一下手機號碼和郵箱的正則匹配練習一下。
一、手機號碼正則表示式:
手機號碼一般為1開頭11位數字,其正則匹配表示式可為:1[0-9]{10}
[0-9]表示0到9之間任意一個數字(也可以用\d表示),{10}表示前面的表示式匹配10次;java字串匹配時增加表達開始和結束的元字元^$.
Java程式碼測試如下:
/**
* 判斷是否為正確的手機格式
* @param str
* @return boolean
*/
public static boolean isMobile0(String str){
if(str == null || "".equals(str)){
return false;
}
return str.matches("^1[0-9]{10}$");
}
public static void main (String[] str){
String mobile = "12345678901" ;
boolean y = isMobile0(mobile);
System.out.println(y);
}
執行結果為:true
這裡主要數字串滿足1開頭11為數字即可,存在比較大的匹配隱患。
進階1:國內的手機號碼開頭號碼段有以下:
移動號碼段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、187、188、147
聯通號碼段:130、131、132、136、185、186、145
電訊號碼段:133、153、180、189
即開頭為13|14|15|18四種,|表示或的意思;再細緻一些則有(13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]),Java程式碼測試如下:
/**
* 判斷是否為正確的手機格式
* @param str
* @return boolean
*/
public static boolean isMobile0(String str){
if(str == null || "".equals(str)){
return false;
}
//return str.matches("^1[0-9]{10}$");
//return str.matches("^1\\d{10}$");
//return str.matches("^(13|14|15|18)\\d{9}$");
//return str.matches("^((13[0-9])|(14[5|7])|(15[0-3])|(15[5-9])|(18[0,5-9]))\\d{8}$");
return str.matches("^1((3[0-9])|(4[5|7])|(5([0-3]|[5-9]))|(8[0,5-9]))\\d{8}$");
}
public static void main (String[] str){
String mobile = "12345678901";
String mobile2 = "13660188000";
boolean n = isMobile0(mobile);
System.out.println(n);
boolean y = isMobile0(mobile2);
System.out.println(y);
}
返回結果為:false true;
第一個String欄位因為號段不對被篩選出來了。
進階2:增加了國字區號,比如我國+86的號碼如何判斷
在原有的基礎前面,增加+86或86的判斷,用?表示匹配一次或0次
/**
* 判斷是否為正確的手機格式
* @param str
* @return boolean
*/
public static boolean isMobile0(String str){
if(str == null || "".equals(str)){
return false;
}
//return str.matches("^1[0-9]{10}$");
//return str.matches("^1\\d{10}$");
//return str.matches("^(13|14|15|18)\\d{9}$");
//return str.matches("^((13[0-9])|(14[5|7])|(15[0-3])|(15[5-9])|(18[0,5-9]))\\d{8}$");
//return str.matches("^1((3[0-9])|(4[5|7])|(5([0-3]|[5-9]))|(8[0,5-9]))\\d{8}$");
return str.matches("^(\\+86|86)?1((3[0-9])|(4[5|7])|(5([0-3]|[5-9]))|(8[0,5-9]))\\d{8}$");
}
public static void main (String[] str){
String mobile = "12345678901";
String mobile2 = "13660188000";
String mobile3 = "+8613660188000";
String mobile4 = "8613660188000";
System.out.println(isMobile0(mobile));
System.out.println(isMobile0(mobile2));
System.out.println(isMobile0(mobile3));
System.out.println(isMobile0(mobile4));
}
測試結果為:false true true true;
二、手機號碼正則表示式
郵箱正常格式為:使用者名稱@域名;
使用者名稱分析:使用者名稱一般由英文字母,中劃線,下劃線,數字等組成,由此確定正則表示式可為[0-9a-zA-Z-_]+;
而正則表示式有\w可用於匹配包括下劃線的單詞字元,即\w 等價於 [0-9a-zA-Z_],上式可以表達為 [\w-](java中要注意轉義);
域名分析:國際規定域名格式[N級域名][三級域名.]二級域名.頂級域名;至少有兩級域名;而域名的表達也可以用[\w-]表示。
那麼郵箱的匹配正則表示式可為:^[\w-][email protected][\w-]+([.][\w-]+)+$
考慮轉義字元等,在java中的實現和測試是:
/**
* 判斷是否為正確的郵件格式
* @param str
* @return boolean
*/
public static boolean isEmail(String str){
if(str == null || "".equals(str)){
return false;
}
return str.matches("^[\\w-][email protected][\\w-]+(\\.[\\w-]+)+$");
}
public static void main (String[] str){
String email1 = "[email protected]";
String email2 = "[email protected]";
System.out.println(isEmail(email1));
System.out.println(isEmail(email2));
}
結果返回 true false
相關推薦
手機號碼、郵箱匹配正則表示式java實現練手
概念:正則表示式就是用某種模式去匹配一類字串的一個公式。它由一些普通字元和一些元字元(metacharacters)組成。普通字元包括大小寫的字母和數字,而元字元則具有特殊的含義。 正則表示式的基礎語法為: “^([]{})([]{})([]{})$”。
String、動態規劃——正則表示式匹配
public class Solution { public boolean isMatch(String s, String p) { if(s == null||p == null) return false; boolean [][]fla
swift 手機號、郵箱、網址等正則表示式驗證
import Foundation enum Validate { case email(_: String) case phoneNum(_: String) case carNum(_: String) case username(_: String) case
港澳臺、大陸身份證正則表示式
var patternMainLand = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/;//大陸 var patternHongkong = /^((\s?[A-Za-z])|([A-Za-z
mysql正則表示式,實現多個欄位匹配多個like模糊查詢
現在有這麼一個需求 一個questions表,欄位有題目(TestSubject),選項(AnswerA,AnswerB,AnswerC,AnswerD,AnswerE) 要求欄位不包含png,jpg,jpeg,gif 正常情況下會這麼寫 select * from questions
python處理異常、日誌以及正則表示式
異常捕獲 高階語言通常都內建了一套try…except…finally…的錯誤處理機制,Python也不例外。而且只要在合適的層次去捕獲錯誤就可以了。 def foo(s): return 10 / int(s) def bar(s):
2018最新版 手機號、驗證碼正則表示式 jq + 小程式
HTML: <!-- 表單 --> <input class="weui-input" id="tel" type="tel" placeholder="請輸入手機號"> <input class="weui-input" t
js驗證郵箱的正則表示式
最近小小研究了一下正則表示式,覺得寫正則表示式還挺有意思的。 今天想自己試著寫一下郵箱驗證,這個其實網上已經很氾濫了,而且各種版本,各種不一樣,我按照自己的理解寫了一個。 首先要先分析一下郵箱格式:第一部分 @ 第二部分(域名) 第一部分:1.只能以數字或字母開頭
註冊登入——前端、後臺驗證(正則表示式)
註冊 介面如圖 前端驗證 html頁面程式碼 <form id="form_reg"> <div> <input type
常用js限制輸入、常用js正則表示式
不允許輸入空格 onkeyup="this.value=this.value.replace(/\s+/g,'')" 只允許輸入數字 onkeyup="this.value=this.value.re
php郵箱驗證正則表示式
class isEmail{ public function run($email){ if(ereg("^([a-zA-Z0-9_-])[email protected]([a-zA-Z0-9_-])+(.[a-zA
java 技巧 去除字串中的空格、回車、換行符、製表符(正則表示式)
import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtils { public static String replaceBlank(String
驗證郵箱的正則表示式
程式碼使用方法: fuchangxi的正則: /^([a-zA-Z0-9_-])[email protected]([a-zA-Z0-9_-])+(/.[a-zA-Z0-9_-])+/ 開始必須是一個或者多個單詞字元或者是-,加上@,然後
用正則表示式簡單實現郵箱登陸註冊等功能
前言 正則表示式(Regular Expression)作為在許多語言中都存在的邏輯表示式。被廣泛應用在檢索、替換等對文字進行操作的功能實現中。比起復雜的for迴圈和if的巢狀,正則表示式則更加簡潔高效,但是它的缺點也在這兒,由於過於符號化,正則表示式往
python爬蟲裡資訊提取的核心方法: Beautifulsoup、Xpath和正則表示式
20170531 這幾天重新拾起了爬蟲,算起來有將近5個月不碰python爬蟲了。 對照著網上的程式和自己以前寫的抓圖的程式進行了重寫,發現了很多問題。總結和歸納和提高學習效果的有效手段,因此對於這些問題做個歸納和總結,一方面總結學習成果,使之成為自己的東西,另一方面
最新郵箱匹配正則(郵箱字首可包含"_")
/** * 校驗郵箱格式 * * @param email * @return * @author shijing * 2015年11月10日下午6:17:59 */ p
郵箱的正則表示式詳解
常用正則表示式—郵箱(Email) 本文針對有一點正則基礎的同學,如果你對正則一無所知,請移步“正則表示式30分鐘入門教程”學習。 要驗證一個字串是否為郵箱的話,首先要了解郵箱賬號的格式。我嘗試過在網上找出一個標準的格式,但是很遺憾我沒有找到。我也嘗試使用RFC標準來判斷郵箱的格式,但是也沒有結果。網上些部落
js驗證郵箱格式-正則表示式
//js定義此函式直接傳參呼叫即可。 function fChkMail(emailAddress){ var reg = new RegExp("^[a-z0-9]+([._\
javascript match()函式匹配正則表示式時的返回值問題
語法 stringObject.match(regexp)返回值 返回匹配結果的陣列。該陣列的內容依賴於 regexp 是否具有全域性標誌 g。 如果 regexp 沒有標誌 g,那麼 match() 方法就只能在 stringObject 中執行一次匹配。如果沒有找到任何
正則表示式 - - java.util.regex 包 (二)
java.util.regex 包主要包括以下三個類: Pattern 類: pattern 物件是一個正則表示式的編譯表示。Pattern 類沒有公共構造方法。要建立一個 Pattern 物件,你必須首先呼叫其公共靜態編譯方法,它返回一個 Pattern 物件。該方法接受一個正則表示式