验证正则表达式返回false

时间:2013-06-04 10:23:04

标签: java regex

为什么我输入的任何正常单词都会返回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.");
    }

我一定错过了什么。

5 个答案:

答案 0 :(得分:1)

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

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

你可能也会发现这个(非常好) Regular-Expressions reference 很有用。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分: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.");
}