Codename One项目使用Java正则Pattern类报cannot find symbol错如何解决
问题根因
Codename One 未内置Java标准库的java.util.regex包,不支持Pattern、Matcher类,因此编译时抛出找不到符号的错误。
紧急修复方案(5分钟即可完成适配,不耽误演示)
直接使用Codename One官方提供的正则工具类com.codename1.util.regex.RE替换原有实现即可,原有正则表达式无需修改:
第一步:修改Statics类的正则常量定义
删掉原有Pattern相关常量,替换为以下代码:
import com.codename1.util.regex.RE; public class Statics { // 邮箱校验正则 public static final RE VALID_EMAIL_ADDRESS_REGEX = new RE("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", RE.MATCH_CASEINDEPENDENT); // 密码校验正则 public static final RE VALID_PASSWORD_REGEX = new RE("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–[{}]:;',?/*~$^+=<>]).{8,20}$", RE.MATCH_CASEINDEPENDENT); // 姓名校验正则(报错中提到的对应常量) public static final RE VALID_NAME_REGEX = new RE("^[a-zA-Z]{3,30}$", RE.MATCH_CASEINDEPENDENT); }
第二步:修改Validator类的校验逻辑
删掉原有java.util.regex.Matcher的导入,修改校验方法如下:
import static edu.esprit.pidev.utils.Statics.VALID_EMAIL_ADDRESS_REGEX; import static edu.esprit.pidev.utils.Statics.VALID_PASSWORD_REGEX; import static edu.esprit.pidev.utils.Statics.VALID_NAME_REGEX; public class Validator { public Validator() { } public boolean testEmail(String mail) { return VALID_EMAIL_ADDRESS_REGEX.match(mail); } public boolean testPassword(String password) { return VALID_PASSWORD_REGEX.match(password); } // 如需姓名校验可按相同逻辑扩展 public boolean testName(String name) { return VALID_NAME_REGEX.match(name); } }
验证提示
改完后可以快速测试几个常规场景:符合规则的邮箱、密码是否返回true,不符合规则的是否返回false,确认无误即可正常打包运行。
内容的提问来源于stack exchange,提问作者user16508788
相关产品推荐
相关产品推荐

