import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Field;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 常用工具类** @version 1.0.0* @date 2020/1/5*/
public class CommonUtil {private static final Logger logger = LoggerFactory.getLogger(CommonUtil.class);/*** 正则表达式:验证手机号*/public static final String REGEX_MOBILE = "^((17[0-9])|(13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";private static final String PDF_FIC_NAME = "name=";/*** 获取pdf接口返回的图片名称** @param url* @return java.lang.String* @date 2020/1/5*/public static String getPicName(String url) {int start = url.lastIndexOf(PDF_FIC_NAME);String out = url.substring(start + PDF_FIC_NAME.length());return out;}/*** 获取文件后缀** @param filepath* @return java.lang.String* @date 2019/1/5*/public static String getSuffix(String filepath) {int ps = filepath.lastIndexOf(".");return filepath.substring(ps);}/*** 获取文件前缀** @param filepath* @return java.lang.String* @date 2019/1/5*/public static String getPrefix(String filepath) {String end = "";int ps = filepath.lastIndexOf(".");end = filepath.substring(0, ps);return end;}/*** 检查邮件是否合法** @param value  邮件地址* @param length 长度* @return true 邮箱格式合法 false 邮箱格式不合法* @date 2019/1/5*/public static boolean checkEmail(String value, int length) {if (StringUtils.isBlank(value)) {return false;}return value.matches("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*") && value.length() <= length;}/*** 检查电话输入 是否正确 正确格 式 012-87654321、0123-87654321、0123-7654321** @param value* @return boolean* @date 2019/1/5*/public static boolean checkTel(String value) {return value.matches("\\d{4}-\\d{8}|\\d{4}-\\d{7}|\\d(3)-\\d(8)");}/*** 检查手机输入 是否正确** @param mobile* @return boolean 校验通过返回true,否则返回false* @date 2019/1/5*/public static boolean checkMobile(String mobile) {if (StringUtils.isBlank(mobile)) {return false;}return mobile.matches("^[1][3,5,7,0,8,4,9,6]\\d{9}");}/*** 检查中文名输 入是否正确** @param value, length* @return boolean* @date 2019/1/5*/public static boolean checkChineseName(String value, int length) {return value.matches("^[\u4e00-\u9fa5]+{1}") && value.length() <= length;}/*** 检查HTML 中首尾空行或空格** @param value* @return boolean* @date 2019/1/5*/public static boolean checkBlank(String value) {return value.matches("^\\s*|\\s*{1}");}/*** 检查字符串是 否含有HTML标签** @param value* @return boolean* @date 2019/1/5*/public static boolean checkHtmlTag(String value) {return value.matches("<(\\S*?)[^>]*>.*?</\\1>|<.*? />");}/*** 检查URL是 否合法** @param value* @return boolean* @date 2019/1/5*/public static boolean checkURL(String value) {return value.matches("[a-zA-z]+://[^\\s]*");}/*** 检查IP是否 合法** @param value* @return boolean* @date 2019/1/5*/public static boolean checkIP(String value) {return value.matches("\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}");}/*** 检查ID是否 合法,开头必须是大小写字母,其他位可以有大小写字符、数字、下划线** @param value* @return boolean* @date 2019/1/5*/public static boolean checkID(String value) {return value.matches("[a-zA-Z][a-zA-Z0-9_]{4,15}{1}");}/*** 检查邮编是否 合法** @param value* @return boolean* @date 2019/1/5*/public static boolean checkPostCode(String value) {return value.matches("[1-9]\\d{5}(?!\\d)");}/*** 检查身份证是 否合法,15位或18位** @param value* @return boolean* @date 2019/1/5*/public static boolean checkIDCard(String value) {return value.matches("\\d{15}|\\d{17}([0-9]|X|x)");}/*** 检查输入是否 超出规定长度** @param value, length* @return boolean* @date 2019/1/5*/public static boolean checkLength(String value, int length) {return ((value == null || "".equals(value.trim())) ? 0 : value.length()) <= length;}/*** 检查是否为空 字符串,空:true,不空:false** @param value* @return boolean* @date 2019/1/5*/public static boolean checkNull(String value) {return value == null || "".equals(value.trim());}/*** 数组转换成字符串** @param array, split* @return java.lang.String* @date 2019/1/5*/public static String arraytostring(Object[] array, String split) {StringBuffer sb = new StringBuffer();if (null == array) {return "";}for (Object obj : array) {sb.append(obj);sb.append(split);}return sb.toString();}/*** 字符串截长** @param s, length* @return java.lang.String* @date 2019/1/5*/public static String bSubstring(String s, int length) {if (null == s || "".equals(s)) {return "";}String ss = "";byte[] bytes;int i;try {bytes = s.getBytes("Unicode");// 表示当前的字节数int n = 0;i = 2;for (; i < bytes.length && n < length; i++) {// 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节if (i % 2 == 1) {n++; // 在UCS2第二个字节时n加1} else {// 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节if (bytes[i] != 0) {n++;}}}// 如果i为奇数时,处理成偶数if (i % 2 == 1) {// 该UCS2字符是汉字时,去掉这个截一半的汉字if (bytes[i - 1] != 0) {i = i - 1;}// 该UCS2字符是字母或数字,则保留该字符else {i = i + 1;}}ss = new String(bytes, 0, i, "Unicode");if (bytes.length > length) {ss += "...";}} catch (Exception e) {logger.error("### bSubstring e :{}", e);}return ss;}/*** 分割字符串并保留分割字符** @param str   需要分割的字符 如:第一句。第二句!第三句:第四句;第五句。* @param regEx 正则表达式:分隔符 如::|。|!|;* @return java.lang.String[]* @date 2019/1/5*/public static String[] splitStrIncludeSplitChar(String str, String regEx) {Pattern p = Pattern.compile(regEx);Matcher m = p.matcher(str);String[] words = p.split(str);/* 将句子结束符连接到相应的句子后 */if (words.length > 0) {int count = 0;while (count < words.length) {if (m.find()) {words[count] += m.group();}count++;}}return words;}/*** 把字符串的内容分成N部分 如: str:suxiao1 n:3 则分割出为:sux,iao,1** @param str  指定字符串* @param part part部分* @return java.lang.String[] 分割出的字符串数组* @date 2019/1/5*/public static String[] splitPartsOfStr(String str, int part) {int strLength = str.length();Integer partLength = strLength / part + 1;String[] result = new String[part];for (int i = 0; i < part; i++) {result[i] = str.substring(i * partLength, (i + 1) * partLength > strLength ? strLength : (i + 1) * partLength);}return result;}/*** 获得简写的字符串:** @param str    需要简写的字符串* @param length 长度* @return java.lang.String* @date 2019/1/5*/public static String getAbbreviationStr(String str, int length) {return str.length() > length ? (str.subSequence(0, length - 1) + "..") : str;}/*** anotherStrs数组中的是否存在一个元素在strs数组中不包含,* 如存在,则返回anotherStrs中第一个不包含的字符 不存在,返回null** @param strs        字符串数组* @param anotherStrs 另一个字符串数组* @return java.lang.String 如:strs:{1,3,4} anotherStrs:{3,4},则返回null* strs:{1,3,4} anotherStrs:{2,4},则返回第一个不包含的字符串2* @date 2019/1/5*/public static String findAnotherStrsElementNotContainInStrsElement(String[] strs, String[] anotherStrs) {List<String> strList = new ArrayList<String>();Collections.addAll(strList, strs);for (String str : anotherStrs) {if (!strList.contains(str)) {return str;}}return null;}/*** anotherStrs数组中的是否存在一个元素在strs数组中包含,* 如存在,则返回anotherStrs中第一个包含的字符* 不存在,返回null** @param strs        字符串数组* @param anotherStrs 另一个字符串数组* @return java.lang.String 如:strs:{2,3,4} anotherStrs:{1,2},则返回2* strs:{1,4} anotherStrs:{2,3},则返回null* @date 2019/1/5*/public static String findAnotherStrsElementContainInStrsElement(String[] strs, String[] anotherStrs) {List<String> strList = new ArrayList<String>();Collections.addAll(strList, strs);for (String str : anotherStrs) {if (strList.contains(str)) {return str;}}return null;}/*** 从字符串数组中移除指定字符** @param strs 字符串数组* @param str  字符* @return java.lang.String[] 去掉str的字符串数组* @date 2019/1/5*/public static String[] removeStrFromStrArr(String[] strs, String str) {List<String> strList = new ArrayList<String>();Collections.addAll(strList, strs);strList.remove(str);String[] strArr = new String[strList.size()];return (String[]) strList.toArray(strArr);}/*** 校验银行卡卡号** @param cardId* @return boolean* @date 2019/1/5*/public static boolean checkBankCard(String cardId) {char bit = getBankCardCheckCode(cardId.substring(0, cardId.length() - 1));if (bit == 'N') {return false;}return cardId.charAt(cardId.length() - 1) == bit;}/*** 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位** @param nonCheckCodeCardId* @return char* @date 2019/1/5*/public static char getBankCardCheckCode(String nonCheckCodeCardId) {if (nonCheckCodeCardId == null || nonCheckCodeCardId.trim().length() == 0 || !nonCheckCodeCardId.matches("\\d+")) {// 如果传的不是数据返回Nreturn 'N';}char[] chs = nonCheckCodeCardId.trim().toCharArray();int luhmSum = 0;for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) {int k = chs[i] - '0';if (j % 2 == 0) {k *= 2;k = k / 10 + k % 10;}luhmSum += k;}return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0');}public static String xssEncode(String s) {if (s == null || "".equals(s)) {return s;}StringBuilder sb = new StringBuilder(s.length() + 16);for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);switch (c) {case '>':/** 全角大于号 */sb.append('>');break;case '<':/** 全角小于号 */sb.append('<');break;case '\'':/** 全角单引号 */sb.append('‘');break;case '\"':/** 全角双引号 */sb.append('“');break;/** case '&': sb.append('&');//全角 break;*/case '\\':/** 全角斜线 */sb.append('\');break;case '#':/** 全角井号 */sb.append('#');break;case '[':/** 全角左小括号 */sb.append('【');break;case ']':/** 全角右小括号 */sb.append('】');break;case '{':/** 全角左大括号  */sb.append('{');break;case '}':/** 全角右大括号 */sb.append('}');break;default:sb.append(c);break;}}return sb.toString();}/*** 对象转map** @param* @return* @date 2019/10/31*/public static Map objectToMap(Object obj) throws IllegalAccessException {Map<String, Object> map = new HashMap<>();Class<?> clazz = obj.getClass();for (Field field : clazz.getDeclaredFields()) {field.setAccessible(true);String fileName = field.getName();Object value = field.get(obj);map.put(fileName, value);}return map;}/*** 请求参数转map** @param queryString* @param enc* @return java.util.Map* @date 2020/3/24*/public static String getUrlParams(String url, String key) {String[] urlParam = url.split("\\?");urlParam = urlParam[1].split("&");for (int i = 0; i < urlParam.length; i++) {String[] cc = urlParam[i].split("=");String k = cc[0];String[] vv = urlParam[i].split(k + "=");String v = vv[1];if (key.equals(k)) {
//                String v = cc[1];return v;}}return null;}public static void main(String[] args) {String str = "{}";
//        String copyStr = str.replace("{}", "code");
//        System.out.println(copyStr);
//        String rex = "code";if (str.contains("{}")) {System.out.println("666");}}public static Set removeDuplication(Set set1 , Set set2) {Set<String> result = new HashSet<String>();result.addAll(set1);result.retainAll(set2);return result;}}

Java正则表达式:校验手机号 ,邮箱,电话号码 信息。

Java正则表达式工具类相关推荐

  1. Java 正则表达式 工具类 中文 英文 email 手机号 身份证 数字 日期

    大家好,我是烤鸭: 分享一个Java版本的正则校验工具类. Validation.java package com.xxx.xxx.common.utils;import java.util.rege ...

  2. Java 正则表达式工具类大全

    import java.util.regex.Matcher; import java.util.regex.Pattern; /**  * @author: nql  * @Description: ...

  3. re管理器java格式_正则表达式工具类——ReUtil

    前言 在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能.就比如说我要匹配一段文本中的某些部分,我们需要这样做: Pattern p ...

  4. java 正则 工具类_正则表达式工具类,正则表达式封装,Java正则表达式

    正则表达式工具类 正则表达式封装 Java正则表达式 >>>>>>>>>>>>>>>>>>& ...

  5. Java常用工具类StringUtils的常用方法

    Java常用工具类StringUtils的常用方法 1.该工具类是用于操作Java.lang.String类的. 2.StringUtils类在操作字符串是安全的,不会报空指针异常,也正因此,在操作字 ...

  6. Hutool Java常用工具类汇总

    简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hu ...

  7. JAVA常用工具类(实用高效)

    JAVA常用工具类(根据GITHUB代码统计) 从Google你能搜索到大量的关于Struts,Spring,Hibernate,iBatis等比较大的框架的资料,但是很少有人去关注一些小的工具包,但 ...

  8. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

  9. Java并发工具类(闭锁CountDownLatch)

    并发工具类系列: Java并发工具类(闭锁CountDownLatch) Java并发工具类(栅栏CyclicBarrier) Java并发工具类(信号量Semaphore) 闭锁是一种同步工具类,可 ...

最新文章

  1. 设计模式之访问者模式(Visitor)摘录
  2. 如何安装altium designer 10
  3. 微信小程序之设置不同的顶部导航栏名称
  4. php是音频吗,只要是用PHP和JS发布的HTML5是否可以播放音频?
  5. 不要为了“分库分表”而“分库分表”
  6. Python——高阶函数
  7. SQL float 保留两位小数
  8. 第四章 子载波均衡和导频矫正
  9. 要闻君说:华为“发飙”了;快手抛出了1000+社招岗位;迅雷2018年度财报:云连续三年上涨;定论!小米成立AIoT战略委员会...
  10. 无法创建视频捕捉过滤器的解决办法
  11. Linux系统管理----centos7系统进程管理
  12. CloudNative:云原生(分布式云)的简介(发展演变/为什么需要/优势价值/安全/对比传统企业应用)、四大核心技术、CNCF云原生交互景观、云原生技术的使用经验及方法之详细攻略
  13. linux dns chroot,chroot环境下dns解析不好用
  14. box filtering
  15. TensorRT加速应用
  16. Rust初学者环境搭建(非Viatual Studio ,自定义安装目录)
  17. 公用计算机打不开扫雷,win7系统自带扫雷游戏打不开的解决方法
  18. IT 攻城狮必备的十大算法思想
  19. 一文读懂基金运作:一只公募基金的运营之旅
  20. 线性代数的本质与微积分的本质视频分享

热门文章

  1. 解决tkinter.PhotoImage()仅支持gif等几种不常用的图片格式问题
  2. WPS文字如何退出修订模式?
  3. 修改maven本地仓库
  4. Python字典遍历删除特定值
  5. SAP取历史库存(可查询期初期末库存和指定日期之库存)
  6. VR直播是什么?看VR直播应用如何开启新直播时代!
  7. 我的微语录周记2012-07-09---2012-…
  8. 初出茅庐的小李第70篇博客之三目运算符求三个数的最大值
  9. Nginx下载速度以及带宽限制(上传不能限制)
  10. Google I/O 2016笔记之图像压缩