Android 验证工具类

来源:互联网 发布:手机版的java api 编辑:程序博客网 时间:2024/05/16 14:28

在我们做项目中都会遇到输入框验证方法
下面给出部分验证工具类
可直接使用 一些相关的正则表达式

package com.thkj.sellers.util;import com.thkj.sellers.constant.RegexConstants;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * <pre> *     author: Blankj *     blog  : http://blankj.com *     time  : 2016/08/02 *     desc  : 正则相关工具类 * </pre> */public final class RegexUtils {    private RegexUtils() {        throw new UnsupportedOperationException("u can't instantiate me...");    }    ///////////////////////////////////////////////////////////////////////////    // If u want more please visit http://toutiao.com/i6231678548520731137    ///////////////////////////////////////////////////////////////////////////    /**     * 验证手机号(简单)     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isMobileSimple(final CharSequence input) {        return isMatch(RegexConstants.REGEX_MOBILE_SIMPLE, input);    }    /**     * 验证手机号(精确)     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isMobileExact(final CharSequence input) {        return isMatch(RegexConstants.REGEX_MOBILE_EXACT, input);    }    /**     * 验证电话号码     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isTel(final CharSequence input) {        return isMatch(RegexConstants.REGEX_TEL, input);    }    /**     * 验证身份证号码15位     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isIDCard15(final CharSequence input) {        return isMatch(RegexConstants.REGEX_ID_CARD15, input);    }    /**     * 验证身份证号码18位     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isIDCard18(final CharSequence input) {        return isMatch(RegexConstants.REGEX_ID_CARD18, input);    }    /**     * 验证邮箱     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isEmail(final CharSequence input) {        return isMatch(RegexConstants.REGEX_EMAIL, input);    }    /**     * 验证URL     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isURL(final CharSequence input) {        return isMatch(RegexConstants.REGEX_URL, input);    }    /**     * 验证汉字     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isZh(final CharSequence input) {        return isMatch(RegexConstants.REGEX_ZH, input);    }    /**     * 验证用户名     * <p>取值范围为a-z,A-Z,0-9,"_",汉字,不能以"_"结尾,用户名必须是6-20位</p>     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isUsername(final CharSequence input) {        return isMatch(RegexConstants.REGEX_USERNAME, input);    }    /**     * 验证yyyy-MM-dd格式的日期校验,已考虑平闰年     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isDate(final CharSequence input) {        return isMatch(RegexConstants.REGEX_DATE, input);    }    /**     * 验证IP地址     *     * @param input 待验证文本     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isIP(final CharSequence input) {        return isMatch(RegexConstants.REGEX_IP, input);    }    /**     * 判断是否匹配正则     *     * @param regex 正则表达式     * @param input 要匹配的字符串     * @return {@code true}: 匹配<br>{@code false}: 不匹配     */    public static boolean isMatch(final String regex, final CharSequence input) {        return input != null && input.length() > 0 && Pattern.matches(regex, input);    }    /**     * 获取正则匹配的部分     *     * @param regex 正则表达式     * @param input 要匹配的字符串     * @return 正则匹配的部分     */    public static List<String> getMatches(final String regex, final CharSequence input) {        if (input == null) return null;        List<String> matches = new ArrayList<>();        Pattern pattern = Pattern.compile(regex);        Matcher matcher = pattern.matcher(input);        while (matcher.find()) {            matches.add(matcher.group());        }        return matches;    }    /**     * 获取正则匹配分组     *     * @param input 要分组的字符串     * @param regex 正则表达式     * @return 正则匹配分组     */    public static String[] getSplits(final String input, final String regex) {        if (input == null) return null;        return input.split(regex);    }    /**     * 替换正则匹配的第一部分     *     * @param input       要替换的字符串     * @param regex       正则表达式     * @param replacement 代替者     * @return 替换正则匹配的第一部分     */    public static String getReplaceFirst(final String input, final String regex, final String replacement) {        if (input == null) return null;        return Pattern.compile(regex).matcher(input).replaceFirst(replacement);    }    /**     * 替换所有正则匹配的部分     *     * @param input       要替换的字符串     * @param regex       正则表达式     * @param replacement 代替者     * @return 替换所有正则匹配的部分     */    public static String getReplaceAll(final String input, final String regex, final String replacement) {        if (input == null) return null;        return Pattern.compile(regex).matcher(input).replaceAll(replacement);    }}

具体方法内容

package com.thkj.sellers.constant;/** * <pre> *     author: Blankj *     blog  : http://blankj.com *     time  : 2017/03/13 *     desc  : 正则相关常量 * </pre> */public final class RegexConstants {    /**     * 正则:手机号(简单)     */    public static final String REGEX_MOBILE_SIMPLE = "^[1]\\d{10}$";    /**     * 正则:手机号(精确)     * <p>移动:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188</p>     * <p>联通:130、131、132、145、155、156、171、175、176、185、186</p>     * <p>电信:133、153、173、177、180、181、189</p>     * <p>全球星:1349</p>     * <p>虚拟运营商:170</p>     */    public static final String REGEX_MOBILE_EXACT  = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,1,3,5-8])|(18[0-9])|(147))\\d{8}$";    /**     * 正则:电话号码     */    public static final String REGEX_TEL           = "^0\\d{2,3}[- ]?\\d{7,8}";    /**     * 正则:身份证号码15位     */    public static final String REGEX_ID_CARD15     = "^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$";    /**     * 正则:身份证号码18位     */    public static final String REGEX_ID_CARD18     = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9Xx])$";    /**     * 正则:邮箱     */    public static final String REGEX_EMAIL         = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";    /**     * 正则:URL     */    public static final String REGEX_URL           = "[a-zA-z]+://[^\\s]*";    /**     * 正则:汉字     */    public static final String REGEX_ZH            = "^[\\u4e00-\\u9fa5]+$";    /**     * 正则:用户名,取值范围为a-z,A-Z,0-9,"_",汉字,不能以"_"结尾,用户名必须是6-20位     */    public static final String REGEX_USERNAME      = "^[\\w\\u4e00-\\u9fa5]{6,20}(?<!_)$";    /**     * 正则:yyyy-MM-dd格式的日期校验,已考虑平闰年     */    public static final String REGEX_DATE          = "^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$";    /**     * 正则:IP地址     */    public static final String REGEX_IP            = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";    ///////////////////////////////////////////////////////////////////////////    // 以下摘自http://tool.oschina.net/regex    ///////////////////////////////////////////////////////////////////////////    /**     * 正则:双字节字符(包括汉字在内)     */    public static final String REGEX_DOUBLE_BYTE_CHAR     = "[^\\x00-\\xff]";    /**     * 正则:空白行     */    public static final String REGEX_BLANK_LINE           = "\\n\\s*\\r";    /**     * 正则:QQ号     */    public static final String REGEX_TENCENT_NUM          = "[1-9][0-9]{4,}";    /**     * 正则:中国邮政编码     */    public static final String REGEX_ZIP_CODE             = "[1-9]\\d{5}(?!\\d)";    /**     * 正则:正整数     */    public static final String REGEX_POSITIVE_INTEGER     = "^[1-9]\\d*$";    /**     * 正则:负整数     */    public static final String REGEX_NEGATIVE_INTEGER     = "^-[1-9]\\d*$";    /**     * 正则:整数     */    public static final String REGEX_INTEGER              = "^-?[1-9]\\d*$";    /**     * 正则:非负整数(正整数 + 0)     */    public static final String REGEX_NOT_NEGATIVE_INTEGER = "^[1-9]\\d*|0$";    /**     * 正则:非正整数(负整数 + 0)     */    public static final String REGEX_NOT_POSITIVE_INTEGER = "^-[1-9]\\d*|0$";    /**     * 正则:正浮点数     */    public static final String REGEX_POSITIVE_FLOAT       = "^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$";    /**     * 正则:负浮点数     */    public static final String REGEX_NEGATIVE_FLOAT       = "^-[1-9]\\d*\\.\\d*|-0\\.\\d*[1-9]\\d*$";    ///////////////////////////////////////////////////////////////////////////    // If u want more please visit http://toutiao.com/i6231678548520731137    ///////////////////////////////////////////////////////////////////////////}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 自动控制技术 吉艾科技股吧 科学技术 电子信息科学与技术就业前景 鹏起科技股吧 科学技术创新 科拉 科拿 科捷 科捷物流 科敏车载冰箱 科教兴国 科教频道 性ai私科教 广州科教城 科教园 科教 先锋科教 科教科 科教平台 少儿科教 科教城 科教方案 科教中心 科教模型 北京科教频道 科教兴国战略 山西科教频道 科教管理平台 科教频道节目表 科教兴国战略提出时间 科教信息管理系统 湖南卫生科教信息平台登录 中央电视台科教频道 科教管理系统 中国科教评价网 湖南科教信息平台 河北少儿科教频道 天津科教频道 广东经济科教 安徽科教频道节目回放