仅适用于大写字母和数字的Java正则表达式

时间:2012-04-16 04:24:12

标签: java regex string

我正在尝试用Java编写一个简单的Regex,但由于某种原因它失败了。我想要做的就是验证字符串是否包含大写字母和/或数字。因此ABC1,111和ABC将有效,但abC1不会。

所以我试着这样做:

    if (!e.getId().matches("[A-Z0-9]")) {
        throw new ValidationException(validationMessage);
    }

我确保e.getId()具有ABC1,但它仍然抛出异常。我知道这是一个非常小而愚蠢的东西,但我无法弄明白。

2 个答案:

答案 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);
}