java后端常用正则校验

对于信息的添加,往往分为前端和后端的验证

下面添加一些常用的java后端正则验证:



/**
 * 字段校验工具类
 * 如果校验不通过  抛出异常 #link ParamNotValidException
 */

public class CheckUtil {

    public static final String REGEX_QQ = "^\\d{5,16}$";
    public static final String REGEX_EMAIL = "\\w+@\\w+(\\.\\w+)+";
    public static final String REGEX_COMPANY = "^[\\u4e00-\\u9fa5]*$";

    /*
     * 其中:\u4e00-\u9fa5 代表中文,\\w代表英文、数字和“_",中括号代表其中的任意字符,最后的加号代表至少出现一次。
     */
    public static final String REGEX_LINKMEN= "[\u4e00-\u9fa5\\w]+";

    public static void checkQQ(String qq) {
        if (StringUtils.isBlank(qq)) {
            return;
        }
        if (!Pattern.matches(REGEX_QQ, qq)) {
            throw new ParamNotValidException("qq格式不正确-->" + qq);
        }
    }

    public static void checkEmail(String email) {
        if (StringUtils.isBlank(email)) {
            return;
        }
        if (!Pattern.matches(REGEX_EMAIL, email)) {
            throw new ParamNotValidException("email格式不正确-->" + email);
        }
    }

    public static void checkCompany(String company) {
        if (StringUtils.isBlank(company)) {
            return;
        }
        if (!Pattern.matches(REGEX_COMPANY, company)) {
            throw new ParamNotValidException("公司名称只能为中文-->" + company);
        }
    }

    public static void checkLinkmen(String linkmen) {
        if (StringUtils.isBlank(linkmen)) {
            return;
        }
        if (!Pattern.matches(REGEX_LINKMEN, linkmen)) {
            throw new ParamNotValidException("联系人只能为汉字或英文字母-->" + linkmen);
        }
    }


    public static void main(String[] args) {
        String qq = "中华34!##545人民";
        checkLinkmen(qq);
    }



}

手机号码 替换:

public static String dealMobile(String mobile) {
     if (StringUtils.isBlank(mobile) || mobile.length() < 11) {
         return mobile;
     } else {
        return  mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
     }
 }

从字符串中取出中文和数字,去掉其他字符

String str = "中华人民共和国: http://www.xxtiao.com/";

System.out.println(str.replaceAll("[\\w]", "").replaceAll("\\p{Punct}", ""));

System.out.println(str.replaceAll("[^\\u4E00-\\u9FA5]", ""));

StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
    if ((str.charAt(i)+"").getBytes().length>1) {
        sb.append(str.charAt(i));
    }
}
System.out.println(sb);

System.out.println(str.replaceAll("[\\p{ASCII}]",""));
System.out.println(str.replaceAll("[\\x00-\\x7F]",""));
String pattern = "[\u4e00-\u9fa5\\w]+";

其中:\u4e00-\u9fa5 代表中文,\\w代表英文、数字和“_",中括号代表其中的任意字符,最后的加号代表至少出现一次

发表评论

邮箱地址不会被公开。