我正在尝试用Java编写一个简单的Regex,但由于某种原因它失败了。我想要做的就是验证字符串是否包含大写字母和/或数字。因此ABC1,111和ABC将有效,但abC1不会。
所以我试着这样做:
if (!e.getId().matches("[A-Z0-9]")) {
throw new ValidationException(validationMessage);
}
我确保e.getId()具有ABC1,但它仍然抛出异常。我知道这是一个非常小而愚蠢的东西,但我无法弄明白。
答案 0 :(得分:10)
使用^[A-Z0-9]+$
作为匹配模式。但是matches
方法匹配整个字符串,[A-Z0-9]+
就足够了。
答案 1 :(得分:5)
您可以尝试以下正则表达式:
[\p{Digit}\p{Lu}]+
即:
if (!e.getId().matches("[\\p{Digit}\\p{Lu}]+")) {
throw new ValidationException(validationMessage);
}