【问题标题】:@Pattern for alphanumeric string - Bean validation@Pattern 用于字母数字字符串 - Bean 验证
【发布时间】:2013-07-03 02:14:16
【问题描述】:

我在 bean 中有一个变量名。我想添加@Pattern 验证以仅接受字母数字。

目前,我有这个。

 @NotNull
 @Pattern(regexp = "{A-Za-z0-9}*")
 String name;

但错误是Invalid regular expression. 我试过[A-Za-z0-9]。但这也不起作用。虽然没有错误。它会将任何有效输入显示为失败。

【问题讨论】:

    标签: java regex annotations bean-validation


    【解决方案1】:

    你试试这个模式吗:^[A-Za-z0-9]*$

    ^[A-Za-z0-9]+$ 以避免空结果。

    如果要检查字符串是否仅包含特定字符,则必须添加锚点(^ 表示字符串的开头,$ 表示字符串的结尾)以确保您的模式与整个字符串匹配。

    大括号仅用于表示重复,例如:如果我想要两个a:
    a{2}
    你不能在里面放字母。唯一可以在大括号之间找到字母的情况是使用 UNICODE 字符类:\p{L}L 表示字母)、\p{Greek}\p{Arabian}、...

    【讨论】:

    • 我在我的 dna 规范文件中添加了[A-Za-z0-9]+$,这对我有用。
    【解决方案2】:

    另外,你可以使用一个可以用在大括号中的字符类,即Alnum。例如,对于长度介于 1 到 32 个字符之间的字母数字字符:

    @Pattern(regexp = "^[\\p{Alnum}]{1,32}$")
    

    https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

    【讨论】:

    • 这符合规范,但不起作用。 @Pattern(regexp = "^[\\p{Alnum}]$")
    • @Dinesh,我认为您期望它验证强制性的字母数字。换句话说,您希望这只会阻止字母或数字。这不是预期的行为。它只允许字母、数字和字母数字字符串。
    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多