首页 > 解决方案 > 正则表达式错误代号一个项目

问题描述

我正在使用验证器类使用正则表达式验证密码 TextField,使其必须包含 1 个大写字母 1 个小写字母 1 个数字和 1 个符号,并且必须介于 6 到 10 个字符之间。

Validator val = new Validator();
Constraint passconst = new RegexConstraint("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d) 
(?=.*[#$^+=!*()@%&]).{6,10}$", "Password invalid");
val.addConstraint(password, passconst);

但我不断收到此错误:

com.codename1.util.regex.RESyntaxException:语法错误:缺少关闭操作数

我无法弄清楚正则表达式中的错误,它是通过使用此网站生成的https://www.regextester.com/97402

标签: regexcodenameone

解决方案


我发现正则表达式太模糊而无法遵循,您可以做一些我个人认为更简单的事情,例如:

private static final String supportedCharacters = "abc...";

Constraint passConstraint = new LengthConstraint(6, "Password invalid") {
   @Override
   public boolean isValid(Object value) {
       String s = (String)v;
       for(int i = 0 ; i < s.length() ; i++) {
          if(!supportedCharacters.contains(s.charAt(i)) return false;
       }
       return super.isValid(value) 
   }
};

推荐阅读