1. 程式人生 > >Android開發實用工具類之資料校驗類

Android開發實用工具類之資料校驗類

package com.heliquan.test.util;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Hashtable;import java.util.regex.Matcher;import java.util.regex.Pattern;import android.text.TextUtils;/** * 驗證資料有效性管理工具類 * * @author HLQ * @createtime
2016年12月23日 11:17:48 * @remarks */
publicclass ValidateUtil { /** * 驗證使用者姓名且字元長度為1~50也就是2~25個漢字 * * @param userName * @return */public static boolean isUserName(String userName) { Pattern pattern = Pattern.compile("^([\u4E00-\u9FA5]|[\uF900-\uFA2D]|[\u258C]|[\u2022]|[\u2E80-\uFE4F])+$"); Matcher mc = pattern.matcher(userName);
return mc.matches(); } /** * 郵箱驗證 * * @param mail * @return */public static boolean isValidEmail(String mail) { Pattern pattern = Pattern.compile("^[A-Za-z0-9][\\w\\._]*[a-zA-Z0-9][email protected][A-Za-z0-9-_]+\\.([A-Za-z]{2,4})"); Matcher mc = pattern.matcher(mail); return mc.matches(); } /** * 驗證手機格式 */
public static boolean isMobileNO(String mobiles) { /* * 移動:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188 * 聯通:130、131、132、152、155、156、185、186 電信:133、153、180、189、(1349衛通) 147 * 177 總結起來就是第一位必定為1,第二位必定為3或5或8,其他位置的可以為0-9 */ String telRegex = "[1][34578]\\d{9}";// "[1]"代表第1位為數字1,"[358]"代表第二位可以為3、5、8中的一個,"\\d{9}"代表後面是可以是0~9的數字,有9位。if (TextUtils.isEmpty(mobiles)) returnfalse; elsereturn mobiles.matches(telRegex); } /** * 判斷輸入是否為數字 */public static boolean isNumeric(String str) { Pattern pattern = Pattern.compile("[0-9]*"); return pattern.matcher(str).matches(); } /** * 判斷手機號是否合法 */public static boolean isPhone(String mobiles) { // Pattern p =// Pattern.compile("^((13[0-9])|(17[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$"); Pattern p = Pattern.compile("1[0-9]{10}"); Matcher m = p.matcher(mobiles); return m.matches(); } /** * 驗證聯絡方式 * * @param str * 座機或手機 * @return */public static boolean isMobileOrPhone(String str) { String regex = "^((([0\\+]\\d{2,3}-)|(0\\d{2,3})-))(\\d{7,8})(-(\\d{3,}))?$|^1[0-9]{10}$"; return match(regex, str); } /** * 驗證金額有效性 * * @param price * @return */public static boolean isPrice(String price) { String regex = "^([1-9][0-9]{0,7})(\\.\\d{1,2})?$"; return match(regex, price); } /** * 判斷是否含有中文 */public static boolean isContainChinese(String str) { Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); Matcher m = p.matcher(str); if (m.find()) { returntrue; } returnfalse; } /** * 判斷是否為純英文 */public static boolean isLetter(String str) { Pattern p = Pattern.compile("^[A-Za-z]+$"); Matcher m = p.matcher(str); return m.matches(); } /** * 判斷是否為純中文 */public static boolean isChiness(String str) { Pattern p = Pattern.compile("^[\u4E00-\u9FFF]+$"); Matcher m = p.matcher(str); return m.matches(); } /** * 判斷必須是否為密碼型別 */public static boolean isPassword(String str) { Pattern p = Pattern.compile("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z.*]{6,20}$"); Matcher m = p.matcher(str); return m.matches(); } /** * 判斷必須是否為警員號 */public static boolean isPoliceNumberAndLength(String str) { Pattern p = Pattern.compile("[A-Za-z0-9]{6,12}"); Matcher m = p.matcher(str); return m.matches(); } /** * 判斷郵件email是否正確格式 */public static boolean isEmail(String email) { if (null == email || "".equals(email)) returnfalse; // Pattern p = Pattern.compile("\\[email protected](\\w+.)+[a-z]{2,3}"); //簡單匹配 Pattern p = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");// 複雜匹配 Matcher m = p.matcher(email); return m.matches(); } /** * 用於判斷使用者輸入字元長度6到20位 * * @param str * @return */public static boolean isLength(String str) { Pattern pattern = Pattern.compile(".{6,20}"); return pattern.matcher(str).matches(); } /** * 用於判斷使用者輸入住址字元長度1到250位 * * @param str * @return */public static boolean isAddressLength(String str) { Pattern pattern = Pattern.compile(".{1,250}"); return pattern.matcher(str).matches(); } /** * 用於判斷使用者輸入描述字元長度1到50位 * * @param str * @return */public static boolean isRemarksLength(String str) { Pattern pattern = Pattern.compile(".{1,50}"); return pattern.matcher(str).matches(); } /** * 用於判斷使用者真名長度 * * @param str * @return */public static boolean isNameLength(String str) { Pattern pattern = Pattern.compile(".{2,25}"); return pattern.matcher(str).matches(); } /** * 用於判斷使用者輸入字元首字母是否英文 * * @param str * @return */public static boolean isEnglish(String str) { Pattern pattern = Pattern.compile("[a-zA-Z][a-zA-Z0-9]+"); return pattern.matcher(str).matches(); } /** * 用於判斷銀行卡位數13到19位 * * @param str * @return */public static boolean isbank(String str) { Pattern pattern = Pattern.compile(".{13,19}"); return pattern.matcher(str).matches(); } /** * 中文佔兩個字元,英文佔一個 */public static int String_length(String value) { int valueLength = 0; String chinese = "[\u4e00-\u9fa5]"; for (int i = 0; i < value.length(); i++) { String temp = value.substring(i, i + 1); if (temp.matches(chinese)) { valueLength += 2; } else { valueLength += 1; } } return valueLength; } /** * 過濾特殊字元 */public static String stringFilter(String str) { String regEx = "[`[email protected]#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); return m.replaceAll(""); } /** * 驗證輸入密碼長度 (6-20位除空格回車tab外的字元) */public static boolean isPasswLength(String str) { String regex = "^\\S{6,20}$"; return match(regex, str); } /** * @param regex * 正則表示式字串 * @param str * 要匹配的字串 * @return 如果str 符合 regex的正則表示式格式,返回true, 否則返回 false; */private static boolean match(String regex, String str) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); return matcher.matches(); } /** * 功能:判斷字串是否為日期格式 * * @return */public static boolean isDate(String strDate) { Pattern pattern = Pattern.compile("^((\\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])))))?$"); Matcher m = pattern.matcher(strDate); if (m.matches()) { returntrue; } else { returnfalse; } } /** * 功能:根據身份證號獲取使用者生日 * * @return */public static String getUserBrithdayByCardId(String ids) { String brithday = ""; if (ids.length() == 18) { brithday = ids.substring(6, 14); // 18位 String years = brithday.substring(0, 4); String moths = brithday.substring(4, 6); String days = brithday.substring(6, 8); brithday = years + "-" + moths + "-" + days; } elseif (ids.length() == 15) { brithday = ids.substring(6, 12); // 15位 String years = brithday.substring(0, 2); String moths = brithday.substring(2, 4); String days = brithday.substring(4, 6); brithday = "19" + years + "-" + moths + "-" + days; } return brithday; } /** * 功能:根據身份證號獲取使用者性別 * * @return */public static String getUserSexByCardId(String ids) { String sexshow = ""; if (ids.length() == 18) { String sexstring = ids.trim().substring(ids.length() - 2, ids.length() - 1); // 取得身份證倒數第二位int sexnum = Integer.parseInt(sexstring); // 轉換成數字if (sexnum % 2 != 0) { sexshow = "男"; } else { sexshow = "女"; } } elseif (ids.length() == 15) { String sexstring = ids.trim().substring(ids.length() - 1, ids.length()); // 取得身份證最後一位int sexnum = Integer.parseInt(sexstring); // 轉換成數字if (sexnum % 2 != 0) { sexshow = "男"; } else { sexshow = "女"; } } return sexshow; }}

相關推薦

Android開發實用工具資料

package com.heliquan.test.util;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.GregorianCalendar;import

淺談軟體測試資料

註明:DBCheck即資料庫資料校驗;一.為什麼需要DBCheck?你同學去年向你借了一萬大洋,今天你打電話想他還錢給你,老同學很大方的給你說馬上給你打到銀行卡上。一會兒,回電話給你說,錢已經全部打到你銀行卡了,讓你等會兒去查詢自己銀行卡的來賬。可是,你左等右等,等到西湖的水都幹了,還是沒有收到銀行的進賬通知

第四十章:Spring MVC框架資料14

第十二章 資料校驗 在Web應用三層架構體系中,表述層負責接收瀏覽器提交的資料,業務邏輯層負責資料的處理。為了能夠讓業務邏輯層基於正確的資料進行處理,我們需要在表述層對資料進行檢查,將錯誤的資料隔絕在業務邏輯層之外。 1.校驗概述 JSR 303是Java為Bean資料合法性

ABP框架學習——資料

校驗介紹 一個應用的輸入應該首先要驗證。這個輸入可以是使用者的輸入,也可以是另一個應用的輸入。在一個Web應用中,驗證通常要實現2次:第一次是客戶端驗證,第二次是服務端驗證。客戶端的驗證是為了更好的使用者體驗,通過檢測表單的欄位來提醒使用者必須的欄位;服

SSM整合資料

什麼是校驗? 一個專案中,通常使用校驗較多的地方是前端的校驗,比如說在頁面中js的校驗(表單驗證)。對於安全性要求較高的,則會要求在服務端也進行校驗。 服務端校驗: 控制層Controller: 校

struts2資料

一、Struts2輸入校驗介紹 Struts2的輸入校驗和型別轉換都是對請求引數進行處理。 輸入校驗顧名思義就是請求引數是否能夠滿足一定的要求; 客戶端校驗&伺服器端校驗 客戶端校驗是指在瀏覽器這端通過JavaScript進行初步校

Android中帶你開發一款自動爆破簽名工具kstools

系統服務 代理類 water 利用 技術分享 roo 解決 問題 dia 一、技術回顧 為了安全起見,一些應用會利用自身的簽名信息對應用做一層防護,為了防止應用被二次打包操作,在之前已經介紹了很多關於應用簽名校驗爆破的方法,一條基本原則不能忘:全局搜索"signature"

Android開發-使用工具判斷網路的連線狀態

第一步 建立一個工具類NetWorks 在工具類中寫一個方法(getConne) 這個工具類裡可以寫很多方法 不僅僅限於判斷網路的連線狀態 比如常見的還有網路請求資料等等…在其他的頁面可以呼叫到這個工具類裡的方法 public class NetWorks { //判斷網路是否連線

Android開發工具:Chrome Custom Tabs

參考文章 官方文件 官方原始碼 http://qq157755587.github.io/2016/08/12/custom-tabs-best-practices/ https://juejin.im/entry/586f089c61ff4b006d29f9c0 一

最全Android開發常用工具

  主要介紹總結的Android開發中常用的工具類,大部分同樣適用於Java。        目前包括  HttpUtils、DownloadManagerPro、Safe.ijiami、ShellUtils、PackageUtils、 PreferencesUtils、

Android開發輔助工具 Utils 彙總

包括了各種工具類、輔助類、管理類等收集中國國內可用APIApache Commons Lang, a package of Java utility classes for the classes that are in java.lang’s hierarchy, or ar

SpringMvc資料@Valid等註解的使用與工具抽取

最近在重構老專案的程式碼,發現校驗入參佔用了很多程式碼,之前我對這一塊的認識侷限於使用StringUtils等工具來多個if塊進行判斷,程式碼是沒什麼問題,但是總寫這些令人生煩,畢竟寫程式碼也要講究優雅的嘛,於是呢我就研究了一下JavaEE Api 上的校驗類,基本上推翻了我之前對校驗註解之類的認識,在這裡記

Android開發藍芽篇藍芽配對、連線與接收資料

首先是此部分涉及到的類 BluetoothAdapter 藍芽介面卡,即該類裡面包含了藍芽使用中常用到的一些API。 BroadcastReceiver 廣播接收者,不難猜測,藍芽裝置開啟或者關閉、搜尋到周邊裝置就要來通知應用,那麼Android系統就會以廣

羊皮書APP(Android版)開發系列(十)Android開發常用工具

日期格式化工具 package cn.studyou.baselibrary.utils; import java.text.DecimalFormat; import java.text.ParseException; import java.text

android開發藝術探索學習 結合Activity的生命周期了解Activity的LaunchMode

友情 dsm ask resume () new onstop androi sum 轉載請標明出處: http://blog.csdn.net/lxk_1993/article/details/50749728 本文出自:【lxk_1993的博客】;

Android開發 - 頁面跳轉以及資料傳遞

Android開發 - 頁面跳轉以及資料傳遞 記錄程式碼詳情參閱Project-FoodList 教程: 頁面需要先在AndroidManifest.xml中註冊,否則會造成閃退 頁面註冊教程與講解 activity a

springmvc 註解開發 validation

專案中使用較多的是前端的校驗,比如頁面中js校驗。對於安全要求較高的建議在服務端進行校驗。 服務端校驗:   控制層controller:校驗頁面請求的引數的合法性,在服務端控制層controller校驗,不區分客戶端型別(瀏覽器、手機客戶端、遠端呼叫)  業務層se

iOS開發實用工具——CornerStone配置SVN

 CornerStone作為一款適用於Mac作業系統的軟體,Subversion 客戶端管理工具。個人感覺用CornerStone配置svn相比XCode的svn容易上手的多。CornerStone配置雖不難,但也有幾個需要注意的地方,在此整理分享給大家,希望能提供些許幫助,當然更希望大家

Android開發(2):資料儲存之一:SharedPrefrences和檔案讀寫

一、資料儲存 本文主要講前兩種儲存方式,其中檔案讀寫只記錄Internal Storage方式 1. SharedPrefrences方式 輕量級NVP方式儲存,以XML的檔案方式儲存,適合少量資料的儲存。 NVP:Name/Value pair, 名稱/值 對。 2.

- Kotlin資料、密封、內部類.md

資料類 1.宣告 data關鍵字 data class Leaf(val size: String,val color: String,val shape: String,val vein: Int