1. 程式人生 > >安卓常用正則匹配工具(字串,年月日,中文,英文,特殊字元,身份證號匹配校驗)

安卓常用正則匹配工具(字串,年月日,中文,英文,特殊字元,身份證號匹配校驗)

餓漢式懶載入正則匹配工具

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