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

释放双眼,带上耳机,听听看~!

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

    /**
* 判断是否匹配正则
*
* @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位数字、字母、符号中任意两种组成
$ 匹配行结尾位置

人已赞赏
Android文章

Android 实现圆柱自定义view

2020-1-5 12:17:42

Android文章

Android RecyclerView createViewHolder异常

2020-1-5 13:15:31

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索