Java 校验规则

2023-11-12

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static jodd.util.StringUtil.isEmpty;


/**
 * 数据校验
 *
 * @author lf
 */
public final class RegUtils {

    /**
     * Don't let anyone instantiate this class.
     */
    private RegUtils() {
        throw new Error("Do not need instantiate!");
    }

    /**
     * 邮箱检测
     *
     * @param email 可能是Email的字符串
     * @return 是否是Email
     */
    public static boolean isEmail(String email) {
        Pattern pattern = Pattern
                .compile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
        Matcher matcher = pattern.matcher(email);
        return matcher.matches();
    }

    /**
     * 邮箱验证
     *
     * @param data 可能是Email的字符串
     * @return 是否是Email
     */
    public static boolean isEmail2(String data) {
        String expr = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
        return data.matches(expr);
    }

    /**
     * 移动手机号码验证
     *
     * @param data 可能是手机号码字符串
     * @return 是否是手机号码
     */
    public static boolean isMobileNumber(String data) {
        String expr = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
        return data.matches(expr);
    }

    /**
     * 只含字母和数字
     *
     * @param data 可能只包含字母和数字的字符串
     * @return 是否只包含字母和数字
     */
    public static boolean isNumberLetter(String data) {
        String expr = "^[A-Za-z0-9]+$";
        return data.matches(expr);
    }

    /**
     * 只含数字
     *
     * @param data 可能只包含数字的字符串
     * @return 是否只包含数字
     */
    public static boolean isNumber(String data) {
        String expr = "^[0-9]+$";
        return data.matches(expr);
    }

    /**
     * 只含字母
     *
     * @param data 可能只包含字母的字符串
     * @return 是否只包含字母
     */
    public static boolean isLetter(String data) {
        String expr = "^[A-Za-z]+$";
        return data.matches(expr);
    }

    /**
     * 只是中文
     *
     * @param data 可能是中文的字符串
     * @return 是否只是中文
     */
    public static boolean isChinese(String data) {
        String expr = "^[\u0391-\uFFE5]+$";
        return data.matches(expr);
    }

    /**
     * 包含中文
     *
     * @param data 可能包含中文的字符串
     * @return 是否包含中文
     */
    public static boolean isContainChinese(String data) {
        String chinese = "[\u0391-\uFFE5]";
        if (isEmpty(data)) {
            for (int i = 0; i < data.length(); i++) {
                String temp = data.substring(i, i + 1);
                boolean flag = temp.matches(chinese);
                if (flag) {
                    return true;
                }
            }
        }
        return false;
    }

    /**
     * 小数点位数
     *
     * @param data   可能包含小数点的字符串
     * @param length 小数点后的长度
     * @return 是否小数点后有length位数字
     */
    public static boolean isDianWeiShu(String data, int length) {
        String expr = "^[1-9][0-9]+\\.[0-9]{" + length + "}$";
        return data.matches(expr);
    }

    /**
     * 身份证号码验证
     *
     * @param data 可能是身份证号码的字符串
     * @return 是否是身份证号码
     */
    public static boolean isCard(String data) {
        String expr = "^[0-9]{17}[0-9xX]$";
        return data.matches(expr);
    }

    /**
     * 邮政编码验证
     *
     * @param data 可能包含邮政编码的字符串
     * @return 是否是邮政编码
     */
    public static String isPostCode(String data){
        String expr = "^[0-9]{6,10}";
        if (!data.matches(expr)){
            return data+"邮箱编码格式错误!";
        }
        return "ok";
    }

    /**
     * 长度验证
     *
     * @param data   源字符串
     * @param length 期望长度
     * @return 是否是期望长度
     */
    public static boolean isLength(String data, int length) {

        return data != null && data.length() == length;
    }

    public static void main(String[] args){

        System.out.println(isPostCode("3405"));
        System.out.println(isCard("2300124145"));
    }

}

结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 校验规则 的相关文章

随机推荐

  • 晶振与软件的关系(深度理解)

    晶振是电路中非常常见的一个元件 常常被人们称为芯片的心脏 确实如此 没有了晶振 可以说一般情况下芯片就无法工作 可编程器件通常来说就是能够通过编程后来执行的芯片 例如各种单片机等等 通常来说我们称软件即是芯片的灵魂 那么如此 作为一个实体的
  • 篮球比赛JAVA代码_Java编程实现NBA赛事接口调用实例代码

    第一步 找别人提供的接口 比如在这里我选择的是聚合数据提供的接口 第二步 要申请相应的AppKey方可使用 此参数会作为接口的参数调用 第三步 调用别人提供的接口方法 代码如下 package juheapi nba Created by
  • MySQL between and 过滤的边界问题

    当数据库字段中存储的是yyyy MM dd格式 即date类型 用between and查询参数yyyy MM dd格式时 包含头尾 相当于x gt y x lt z 当是yyyy MM dd HH mm ss格式 即datetime类型
  • MySQL的biglog文件操作

    一 查看 1 SQL 1 查看所有binlog文件 mysql gt show binary logs 2 查看binlog内容 mysql gt show binlog events in mysql bin 000001 2 mysql
  • 反向代理神器 Nginx Proxy Manager 群晖Docker部署

    群晖Docker部署 本文将使用 NginxProxyManager 中文版 介绍NginxProxyManager基于群晖Docke的部署方法 并且所有操作均在群晖网页端完成 不需要命令行操作 非常适合新手 GitHub xiaoxinp
  • CCMoveBy和CCMoveTo有什么区别?

    CCMoveBy和CCMoveTo有什么区别 cocos2d里面的CCMoveBy 和CCMoveTo有什么区别 含义不同的地方在那块 那位高人给解释一下 谢谢 insul 2010 09 14 18 52 by是相对于当前位置 to是到该
  • AI for Scinece Cup 邀请函:一等奖5万

    点击阅读原文 也可进入比赛报名页面
  • Three.js快速入门

    Three js快速入门 1 threejs文件包下载和目录简介 下载地址 网盘链接 https pan baidu com s 1 Ix8TiOScypNcQe3BIl5vA pwd rrks 提取码 rrks threejs文件资源目录
  • iTween基础之Value(数值过度)

    一 基础介绍 二 基础属性 原文地址 http blog csdn net dingkun520wy article details 50550527 一 基础介绍 Value有一个函数 ValueTo 返回一个 from 和 to 之间的
  • element table 合计 第一行 固定列

    element table 合计 第一行 在这位大哥这里学来的 但同时我这边的情况是 固定高度 第一列固定 参数多 因此 这个方法不能够完全满足 因此加入以下代码 代码作用 在每次获取到表格数据时进行操作 因为固定列后 第一列滚动到最底部都
  • np.random.randn()、np.random.rand()、np.random.randint()的区别和用法

    1 np random randn 函数 通过本函数可以返回一个或一组服从标准正态分布的随机样本值 语法 np random randn d0 d1 d2 dn 1 当函数括号内没有参数时 则返回一个浮点数 2 当函数括号内有一个参数时 则
  • SpringBoot+AOP实现用户操作日志的记录

    前言 任何一个项目都会有一个用户操作日志 也叫行为日志 的模块 它主要用来记录某个用户做了某个操作 当出现操作失败时 通过日志就可以快速的查找是哪个用户在哪个模块出现了错误 以便于开发人员快速定位问题所在 实现这一功能一般有两种方法 第一种
  • sqlite

    SQLite库包含一个名字叫做sqlite3的命令行 它可以让用户手工输入并执行面向SQLite数据库的SQL命令 本文档提供一个样使用sqlite3的简要说明 开始 启动sqlite3程序 仅仅需要敲入带有SQLite数据库名字的 sql
  • java调用C++代码

    首先我的参考博客如下 https www cnblogs com CLAYJJ p 7725975 html https www cnblogs com xiaocainiao2hao p 5619862 html https www cn
  • 安卓图片浏览app,应付期末考试的(附下载链接)

    安卓图片浏览app 一个简单的安卓app 采用andstudio开发 有注册登录功能 可以搜索详细情况请看应用截图所示 下载链接 https download csdn net download weixin 43474701 850717
  • 好好开始,好好告别,好好生活

    天气好像一下子冷了起来 才感盛夏 忽而立秋 季节轮换 很多人把很多人忘了吧 昨天我看到这样一句话 衬着淅沥了两天的小雨 莫名觉得有些伤感 这些年 不停地遇见 也不停地再见 总要等很久以后才知道 相遇是恰逢其时 离别也是早有因果 原来有些人出
  • Android Make Update-api 方法

    目录 SOC Rk3288Android Version 8 1 SOC Rk3566Android Version 11 SOC Rk3288 Android Version 8 1 众所周知 当修改到framework变量时 需要mak
  • 可视化图表种类不清楚?这两个宝藏参考网址推荐给你~~

    我是小z 不少读者会问 有啥介绍可视化类型的学习和参考资料 我平时在绘制可视化作品时 也会对种类繁多的可视化图表选择和系统绘制无从下手 今天 就推荐平时自己参考的可视化表种类网站 帮你熟悉和完善图表类型 内容如下 Chart Guide d
  • Ubuntu常用的有3种进入终端(terminal)界面方法

    Ubuntu常用的有3种进入终端 terminal 界面方法 分别如下 按快捷键 Ctrl Alt T 即可打开终端窗口 或者按 Ctrl Alt F1 F6 均可进入终端 模拟终端 不显示桌面 直接搜索 终端 并进入 注意事项 如果采用方
  • Java 校验规则

    import java util regex Matcher import java util regex Pattern import static jodd util StringUtil isEmpty 数据校验 author lf