关于页面输入字符串、转义 java.util.regex.PatternSyntaxException Dangling meta character ‘*’ near index 0等异常

近期甲方验收项目,各种手段测试层出不穷,用*%&%&%&等特殊字符串在所有输入的地方进行验证,结果就会使页面崩了或者抛出字符串异常,由于正则一直百度,并且所有页面都需要修复感觉很恶心,诸多测试后终于找到适合我且可用的,贴上代码记录

在这里插入图片描述

  • 自定义工具类对关键部位进行检测

public static String PASSWORD_REGEX = "[\\S]{8,}";

    public static String PASSWORD_NUMBER_REGEX = ".*[\\d]+.*";

    public static String PASSWORD_CHARACTER_REGEX = ".*[a-zA-Z]+.*";

    public static String PASSWORD_SPECIAL_REGEX = ".*[^\\da-zA-Z\\s]+.*";

    public static String PASSWORD_CHAR_REGEX = "[`~!@#$%^&*()+=|{}':',\\\\[\\\\].<>/?~!@#¥%……& amp;*()——+|{}【】‘;:”“’。,、?|-]";

	//检测中文字符和标点
            Pattern p = Pattern.compile("[\u4E00-\u9FA5|\\!|\\,|\\。|\\(|\\)|\\《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]");
            Matcher m = p.matcher(password);
            if (m.find()) {
                flag = false;
            }

    /**
     * 验证密码是否符合格式
     * @param
     * @return
     */
    public static boolean passwordVerification(String password) {
        boolean flag = false;

        if (password.matches(PASSWORD_REGEX)) {
            int i = 0;
            if (password.matches(PASSWORD_NUMBER_REGEX)) {
                i++;
            }
            if (password.matches(PASSWORD_CHARACTER_REGEX)) {
                i++;
            }
            if (password.matches(PASSWORD_SPECIAL_REGEX)) {
                i++;
            }
            if (i > 1) {
                flag = true;
            }
            if(password.matches(PASSWORD_CHAR_REGEX)){
                flag = false;
            }
        }
        return flag;
    }
    public static boolean passwordChar(String password) {
        boolean flag = false;
        if(!password.matches(PASSWORD_CHAR_REGEX)){
            return true;
            }
        return flag;
    }

    /**
     * 验证密码是否<b>不</b>符合格式
     * @param
     * @return
     */
    public static boolean passwordNotVerification(String password) {
        return !passwordVerification(password);
    }


    public static String escapeExprSpecialWord(String password) {

        if (StringUtils.isNotBlank(password)) {
            String[] fbsArr = {"\\","&","$", "(", ")", "*", "+", ".", "[", "]", "?", "^", "{", "}", "|"};
            for (String key : fbsArr) {
                if (password.contains(key)) {
                    password = password.replace(key, "\\" + key);
                }
            }
        }
        return password;
    }

以上代码还可以整合,太懒了也懒得搞了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值