首页 > 其他分享 >Android开发实用工具类之数据校验类

Android开发实用工具类之数据校验类

时间:2022-11-10 19:38:28浏览次数:33  
标签:return String Pattern 实用工具 校验 static str Android public


啦啦啦,今天为大家带来开发中会遇到的相关数据校验类,方便你我他~

欢迎大家提供更好更棒的方式~

代码一波来袭~

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
*/
public class 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]+@[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))
return false;
else
return 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()) {
return true;
}
return false;
}

/**
* 判断是否为纯英文
*/
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))
return false;
// Pattern p = Pattern.compile("\\w+@(\\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 = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
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()) {
return true;
} else {
return false;
}
}

/**
* 功能:根据身份证号获取用户生日
*
* @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;

} else if (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 = "女";
}
} else if (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;
}
}

恐怖的一波代码袭击之后,是不是有种意犹未尽的赶脚呢???



标签:return,String,Pattern,实用工具,校验,static,str,Android,public
From: https://blog.51cto.com/u_13346181/5841961

相关文章

  • Android Study之图解配置adb
    LZ-Says:话说中午看到苹果将要发布所谓的中国红,,,心里顿时有些小恶心,,,丫的,,,期待好久,,,就是这个结果,,,还是怀念乔帮主的时代啊~身为一名Android开发,ADB这个东西不可避免都会用到,当你如......
  • 说说关于Android使用Gson解析Json所需实体类的那些事~
    LZ-Says:技术,真的是日积月累,厚积薄发~前言目前解析json的方法有很多种,LZ个人认为使用Gson还是一种很不错的选择,因为使用Gson时,我们只需要考虑将json中参数和实体类属性一一对......
  • 涨姿势 之 Android Studio 3.5 设置类模版
    L-J_Q:遇到小赖皮怎么破?前言最近更新完AndroidStudio3.5后,突然发现之前设置的一些东西通通消失了,记得是覆盖呀。最无奈的一点就是每次新建类,都需要手动添加类注释,今天......
  • 涨姿势 之 Android Studio 解决 no module
    LZ-Says:总有一份关心,深入内心。前言终于多少明白鸡大说的沉浸,沉淀了。还好,最近的日子,充实,开森,爽~Today,不忍我的MBP桌面吃灰且也不想天天背着电脑挤地铁,最关键的还是我想......
  • Android Study 将DB打包APK
    LZ-Say:最近天有点凉了,小风嗖嗖的~各位注意身体~还记得项目中有相关城市以及区县联动显示,之前老版本是将这些内容保存文本,之后读取,转化,显示。挺麻烦的,所以打算直接弄成数据库......
  • Android Study 之学(kao)习(bei)官方关于64k异常处理 ^_^
    LZ-Says:在外面呆了一年又一年,似乎都快忘记当初出来的目的,不过,幸好,不忘初心~给家里买点东西,家里开心,我也开心~这就够了。前言随着APP的一次又一次迭代,APP的体积也越来越大,这......
  • Android Studio 2.3.1 变更SVN项目地址
    LZ-Says:技术前行道路上,真是挖坑不断,踩坑不止,填坑没完。。。前段时间访问SVN,结果看到上面乱糟糟的,这个给我愁的啊,直接归档整理了下。整理之后,之前项目SVN地址也没替换,今天更......
  • 解决Android Studio控制台中文乱码(方框)问题
    LZ-Say:坚持自己的,一步一个脚印努力走下去,加油!最近遇到个恶心的事儿,就使用死丢丢的时候,发现怎么我的控制台输出中文都显示方框???别人都没事,恶心坏我了。经过各种百度,终于找到解......
  • Android Study 之冷启动优化(解决启动短暂白屏or黑屏)
    LZ-Says:话说真正负责项目后才发现,想要软件越来越好,就要从细节抓问题,去解决问题,这样我们的软件才会越来越好~前言今天下班路上闲的无聊随便点了几个app,包括正在负责的几个项......
  • Android Study之总结使用ListView时需要去除相关效果的属性
    LZ-Says:各种忙啊。。。话说虽然之前推出一个RecyclerView替代了ListView以及GirdView,但是ListView依旧是ListView,掌握点相关知识多少还是有点用处的。使用ListView时,不免......