0

为什么我输入的任何正常单词都会返回 false?

if(!guestbook.getName().matches("[a-zA-Z0-9\\s]")) {
        errors.rejectValue("name", "stringFormat.falseCharacters", "You are only allowed to use numbers, letters and spaces for the name.");
    }

我肯定错过了什么。

4

5 回答 5

1

您的正则表达式仅匹配一个字符的长字符串。
要匹配一个或多个字符,请将其更改为:

"[a-zA-Z0-9\\s]+"

您可能还会发现这个(imo 很棒)正则表达式参考很有用。

于 2013-06-04T10:26:10.537 回答
1

你需要的是[a-zA-Z0-9\\s]+. +在最后添加。

于 2013-06-04T10:26:20.923 回答
0

在正则表达式中,您使用+范围末尾的 来指定“多个”,而在您的情况下,您仅探测长度为 1 的表达式。

于 2013-06-04T10:30:11.310 回答
0

试试这个正则表达式“^[A-Za-z0-9\s]+$”,

if(!guestbook.getName().matches("^[A-Za-z0-9\\s]+$")) {
    errors.rejectValue("name", "stringFormat.falseCharacters", "You are only allowed to use numbers, letters and spaces for the name.");
}
于 2013-06-04T10:34:46.783 回答
0

因为您应该在正则表达式的末尾添加“+”,否则您只请求匹配一个字符。

于 2013-06-04T10:27:20.007 回答