安卓常用正則匹配工具(字串,年月日,中文,英文,特殊字元,身份證號匹配校驗)
餓漢式懶載入正則匹配工具
package com.util.test;
import java.util.Hashtable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 常用正則表示式匹配工具
*
* @author ytf
*/
public class RegularExpression {
private RegularExpression() {
}
private static class LazyHolder {
private static final RegularExpression INSTANCE = new RegularExpression();
}
public static final RegularExpression getInstance() {
return LazyHolder.INSTANCE;
}
private Pattern p_PhoneNum = Pattern.compile("^1[3|4|5|6|7|8|9][0-9]\\d{8}$");//匹配手機號
private Pattern p_str = Pattern.compile("\\s*|\t|\r|\n" );//刪除換行和空格
private Pattern p_letter = Pattern.compile("^[a-zA-Z]+$");//匹配字母
private Pattern p_letterNum = Pattern.compile("^[a-zA-Z0-9]+$");//匹配數字和字母
private Pattern p_letterNumLine = Pattern.compile("^[a-zA-Z0-9_]+$");//匹配數字字母下劃線
private Pattern p_chinese = Pattern.compile("^[\\u4E00-\\u9FA5]+$" );//匹配中文(簡繁)
private Pattern p_chineses = Pattern.compile("^[\\u4E00-\\u9FFF]+$");//匹配中文(簡繁)
private Pattern p_emailAddress = Pattern.compile("[\\w\\.\\-][email protected]([\\w\\-]+\\.)+[\\w\\-]+");//匹配郵箱
@SuppressWarnings("unused")
//匹配年月日
//private String regx="[1-9][0-9]{3}-[0-1][0-2]-((0[1-9])|([12][0-9])|(3[01]))";
private String regxStr="^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$";
private Pattern p_data = Pattern.compile(regxStr);
/**
* 字串是否為空
*/
public boolean isEmpty(String value) {
return value == null || value.length() == 0 || "null".equals(value);
}
/**
* String 中是否包含空格和換行符
* 如果包含,去除String中所有空格和換行符
*/
public String getStringNoBlank(String str) {
if (str != null && !"".equals(str)) {
Matcher m = p_str.matcher(str);
String strNoBlank = m.replaceAll("");
return strNoBlank;
} else {
return str;
}
}
/**
* 匹配手機號
* 第1位:1;
* 第2位:{3、4、5、6、7、8、9}任意數字;
* 第3—11位:0—9任意數字
*/
@SuppressWarnings("unused")
private boolean isTelPhoneNumber(String value) {
if (value != null && value.length() == 11) {
Matcher matcher = p_PhoneNum.matcher(value);
return matcher.matches();
}
return false;
}
/**
* 匹配郵箱
*
* @return 返回true表示合法
*/
public boolean isEmailAddress(String address) {
if (null != address) {
Matcher m = p_emailAddress.matcher(address);
return m.matches();
}
return false;
}
/***
* 是否為int型數字
*/
public boolean isInterger(String value) {
try {
int num = Integer.parseInt(value);
return num < (Math.pow(2, 31) - 1) && num > Math.pow(-2, 31);
} catch (NumberFormatException e) {
return false;
}
}
/***
* 是否為LONG
*/
public boolean isLong(String value) {
try {
long num = Long.parseLong(value);
return num < (Math.pow(2, 63) - 1) && num > Math.pow(-2, 63);
} catch (NumberFormatException e) {
return false;
}
}
/**
* 是否為字母
*
* @param value
* @return
*/
public boolean isLetter(String value) {
if (value != null) {
Matcher m = p_letter.matcher(value);
return m.matches();
}
return false;
}
/**
* 匹配數字和字母
*
* @param value
* @return 返回true匹配成功
*/
public boolean isLetterAndNum(String value) {
if (value != null) {
Matcher m = p_letterNum.matcher(value);
return m.matches();
}
return false;
}
/**
* 匹配數字字母下劃線
*
* @param value
* @return
*/
public boolean isLetterNumLine(String value) {
if (value != null) {
Matcher m = p_letterNumLine.matcher(value);
return m.matches();
}
return false;
}
/**
* 匹配簡體中文
*
* @param value
* @return
*/
public boolean isChinese(String value) {
if (value != null) {
Matcher m = p_chinese.matcher(value);
return m.matches();
}
return false;
}
/**
* 匹配簡體中文和繁體中文
*
* @param value
* @return
*/
public boolean isChineses(String value) {
if (value != null) {
Matcher m = p_chineses.matcher(value);
return m.matches();
}
return false;
}
/**
* 年月日匹配yyyy-mm-dd
* @param idCard
* @return
*/
public boolean isDateFormated(String idCard) {
Matcher isNo=p_data.matcher(idCard);
if (!isNo.matches()) {
return false;
}
return true;
}
/**
* 驗證身份證號碼簡單匹配
* 詳細匹配呼叫聚合資料介面線上匹配
* @param idCard
* @return
*/
public boolean isIdCardNum(String idCard) {
String reg = "^\\d{15}$|^\\d{17}[0-9Xx]$";
@SuppressWarnings("unused")
String strYear = idCard.substring(6, 14);// 年月日
if (!idCard.matches(reg)) {
System.out.println("身份證格式不正確");
return false;
}
@SuppressWarnings("rawtypes")
Hashtable h = GetAreaCode();
if (h.get(idCard.substring(0, 2)) == null) {
System.out.println("身份證地區編碼錯誤。");
return false;
}
return true;
}
/**
* 功能:設定地區編碼
*
* @return Hashtable 物件
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
private static Hashtable GetAreaCode() {
Hashtable hashtable = new Hashtable();
hashtable.put("11", "北京");
hashtable.put("12", "天津");
hashtable.put("13", "河北");
hashtable.put("14", "山西");
hashtable.put("15", "內蒙古");
hashtable.put("21", "遼寧");
hashtable.put("22", "吉林");
hashtable.put("23", "黑龍江");
hashtable.put("31", "上海");
hashtable.put("32", "江蘇");
hashtable.put("33", "浙江");
hashtable.put("34", "安徽");
hashtable.put("35", "福建");
hashtable.put("36", "江西");
hashtable.put("37", "山東");
hashtable.put("41", "河南");
hashtable.put("42", "湖北");
hashtable.put("43", "湖南");
hashtable.put("44", "廣東");
hashtable.put("45", "廣西");
hashtable.put("46", "海南");
hashtable.put("50", "重慶");
hashtable.put("51", "四川");
hashtable.put("52", "貴州");
hashtable.put("53", "雲南");
hashtable.put("54", "西藏");
hashtable.put("61", "陝西");
hashtable.put("62", "甘肅");
hashtable.put("63", "青海");
hashtable.put("64", "寧夏");
hashtable.put("65", "新疆");
hashtable.put("71", "臺灣");
hashtable.put("81", "香港");
hashtable.put("82", "澳門");
hashtable.put("91", "國外");
return hashtable;
}
}
相關推薦
安卓常用正則匹配工具(字串,年月日,中文,英文,特殊字元,身份證號匹配校驗)
餓漢式懶載入正則匹配工具 package com.util.test; import java.util.Hashtable; import java.util.regex.Matcher; import java.util.regex.Patte
常用正則表示式大全(匹配中文、匹配html)
常用正則表示式大全!(例如:匹配中文、匹配html) 匹配中文字元的正則表示式: [u4e00-u9fa5] 評註:匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元(包括漢字在內):[^x00-xff] 評註:可以用來計算字串的長度(
最全的常用正則表達式(轉)
slow alc 刪除行 數字 常用正則表達式 所有 else ref 只能輸入數字 轉自:http://www.open-open.com/code/view/1430625516632 一、校驗數字的表達式 1 數字:^[0-9]*$ 2 n位的數字:^\d{
常用正則表示式—郵箱(Email)
要驗證一個字串是否為郵箱的話,首先要了解郵箱賬號的格式。我嘗試過在網上找出一個標準的格式,但是很遺憾我沒有找到。我也嘗試使用RFC標準來判斷郵箱的格式,但是也沒有結果。網上些部落格說不應該使用RFC標準來驗證郵箱是否合法,有興趣的可以看看“is this ema
安卓常用的反編譯工具:dex2jar、jd-gui、apktool及oat2dex
[apk反編譯]-Jadx反編譯工具及下載位置(smb://172.16.78.123/forever/Tools/apktool/):jadx:https://github.com/skylot/jadx.git1.git clone https://github.com/
常用正則表示式大全 (轉)
以下是轉載的文章,有了現成的表示式,又有現成的正則表示式類,應該可以滿足一般需求了,呵呵。 常用正則表示式大全!(例如:匹配中文、匹配html) 匹配中文字元的正則表示式: [u4e00-u9fa5] 評註:匹配中文還真是個頭疼的事,有了這個表示式就好辦
常用正則表達式大全!(例如:匹配中文、匹配html)
劃線 bsp 包含 空白 例如 xxxxxx 郵政編碼 刪除空白行 取ip 匹配中文字符的正則表達式: [u4e00-u9fa5] 評註:匹配中文還真是個頭疼的事,有了這個表達式就好辦了 匹配雙字節字符(包括漢字在內):[^x00-xff] 評註:可以用來
正則匹配任意字元(常用正則表示式的書寫)
http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm 正則教程 (注:元字元包括\ | ( ) [ ] { } ^ $ * + ? . ) 匹配中文字元的正則表示式: [\u4e00-
常用正則表示式大全!(例如:匹配中文、匹配html)
匹配中文字元的正則表示式: [u4e00-u9fa5] 評註:匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元(包括漢字在內):[^x00-xff] 評註:可以用來計算字串的長度(一個雙位元組字元長度計2,ASCII字元計1)
安卓常用到的幾個工具類(不定期更新)
自己做專案,用到的幾個工具類,這裡記一下,以後找到方便 1.一個double型別資料精準四則運算類Arith.java import java.math.BigDecimal; public class Arith{ //預設除法運算精度 private
[轉]常用正則表示式大全!(例如:匹配中文、匹配html)
[url]http://www.cnblogs.com/guiliangfeng/archive/2009/04/13/1434696.html[/url]常用正則表示式大全!(例如:匹配中文、匹配html) 匹配中文字元的正則表示式: [u4e00-u9fa5] 評
常用正則匹配(手機,郵箱...)
接受一組資料 m = re.match(r'(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*', content) 匹配姓名{2,4}:名字長度2-4位。 \u
一些常用的正則表達式(from web)
常用 15位 rom 整數 使用 手機號 如果 逗號 之間 一、校驗數字的表達式數字:^[0-9]*$n位的數字:^\d{n}$至少n位的數字:^\d{n,}$m-n位的數字:^\d{m,n}$零和非零開頭的數字:^(0|[1-9][0-9]*)$非零開頭的最多帶兩位小
day19——常用正則表達式、re正則對象和正則匹配效率比較、編譯正則對象
import com pattern ima 優先 打印 來看 image python 正則網站:regex101.com 在了解re模塊之前,我們可以先了解一下正則表達式,正則表達式在很多語言中都有使用,但是不同的語言直接又有有些細小的區別,下面我們就來列舉一下
Android 開發:(三)安卓常用控制元件以及仿《微門戶》登入介面實現
一、常用控制元件: 1、文字類控制元件 TextView 負責展示文字,非編輯 EditText 可編輯文字控制元件 2、按鈕類控制元件 Button 按鈕 ImageButton 圖片按鈕 RadioButton與RadioGroup 單
Android 開發:(二)安卓常用5大布局方式
一、Android中常用的5大布局方式有以下幾種: 1.線性佈局(LinearLayout):按照垂直或者水平方向佈局的元件; 2.幀佈局(FrameLayout) :元件從螢幕左上方(0,0)佈局元件; 3.相對佈局 (RelativeLayout) :相對其它元件的佈
Java--常用正則匹配符號
1、字母:匹配單個字母 (1)A:表示匹配字母A; (2)\\:匹配轉義字元“\”; (3)\t:匹配轉義字元“\t”; (4)\n:匹配轉義字元“\n”; 2、一組字元:任意匹配裡面的一個單個字元: (1)[abc]:表示可能是字母a,可能是字母b或者是字母c; (2)
常用正則表示式(copy)
一、校驗數字的表示式 數字:^[0-9]*$ n位的數字:^\d{n}$ 至少n位的數字:^\d{n,}$ m-n位的數字:^\d{m,n}$ 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(\.[0
常用正則表示式(高亮,markdown)
校驗數字的表示式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^\d{m,n}$ 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(
常用正則表達 (轉)
//QQ的規律 5-11位 開頭是不為0的數字var regQQ = /^[1-9]\d{4,10}$/;//手機 11位 有號段 13[0-9] 14[57] 15[0-9] 17[0-9] 18[0-9]var regMobile = /^(13[0-9]|14[57]|15[0-9]|17[0-9]|1