美文网首页
字母、数字、字符任意两种组合正则验证

字母、数字、字符任意两种组合正则验证

作者: 天天小志 | 来源:发表于2017-12-12 17:09 被阅读706次

    最近朋友有个用户名验证,要求字母、数字、字符任意两种组合即可,让我帮写个正则验证,现在正则验证如下:

        /**
         * 判断是否匹配正则
         *
         * @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);
        }
    
        public static boolean isTest(CharSequence input) {
            String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[A-Za-z0-9\\W]{1,}$";
    //        Pattern compile = Pattern.compile(regex);
    //        Matcher matcher = compile.matcher(input.toString());
    //        return matcher.find();
            return isMatch(regex, input);
        }
    
    • 测试
    Log.i("@@@", "abc12/.,===" + RegexUtils.isTest("abc12/.,"));
    Log.i("@@@", "abc12===" + RegexUtils.isTest("abc12"));
    Log.i("@@@", "abc.,/===" + RegexUtils.isTest("abc.,/"));
    Log.i("@@@", "123.,/===" + RegexUtils.isTest("123.,/"));
    Log.i("@@@", "123.,asdasd/===" + RegexUtils.isTest("123.,asdasd/"));
    Log.i("@@@", ",./123.,asdasd/===" + RegexUtils.isTest("123.,asdasd/"));
    Log.i("@@@", "asdas,./123===" + RegexUtils.isTest("sdas,./123"));
    Log.i("@@@", "1234adsfa===" + RegexUtils.isTest("1234adsfa"));
    Log.i("@@@", "。,123,,sfdwe][0989//.';';[===" + RegexUtils.isTest("。,123,,sfdwe][0989//.';';["));
    Log.i("@@@", "abc===" + RegexUtils.isTest("abc"));
    
    
    • 输出结果如下:
    @@@: abc12/.,===true
    @@@: abc12===true
    @@@: abc.,/===true
    @@@: 123.,/===true
    @@@: 123.,asdasd/===true
    @@@: ,./123.,asdasd/===true
    @@@: asdas,./123===true
    @@@: 1234adsfa===true
    @@@: 。,123,,sfdwe][0989//.';';[===true
    @@@: abc===false
    
    
    • 正则说明
    String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[A-Za-z0-9\\W]{1,}$";
    
    ^ 匹配一行的开头位置
    
    (?![0-9]+$) 预测该位置后面不全是数字
    
    (?![a-zA-Z]+$) 预测该位置后面不全是字母
    
    [A-Za-z0-9\\W]{1,} 由1位数字、字母、符号中任意两种组成
    
    $ 匹配行结尾位置
    
    

    相关文章

      网友评论

          本文标题:字母、数字、字符任意两种组合正则验证

          本文链接:https://www.haomeiwen.com/subject/auunixtx.html