检查字符串是否为长度为 1 到 5 的字母数字

Check that String is alphanumeric with length 1 to 5

我写了下面的测试代码片段:

"123".matches("\[a-zA-Z0-9]{1,5}");

然而,returns false.

为什么以及如何解决这个问题?

通过转义第一个 [,您将其设为文字 [,而您想要定义一个 字符 class(方括号表达式)。

删除\:

"123".matches("[a-zA-Z0-9]{1,5}");
               ^  

Java demo

System.out.println("123".matches("[a-zA-Z0-9]{1,5}")); // = > true

没有 \ 的正则表达式将起作用。你不需要转义任何东西。

"123".matches("[a-zA-Z0-9]{1,5}");

您正在使用 \ 转义第一个方括号,这意味着方括号之间的表达式不会被视为字符 class。删除转义,你应该没问题:

"123".matches("[a-zA-Z0-9]{1,5}"
// Here -------^