为什么我输入的任何正常单词都会返回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.");
}
我一定错过了什么。
答案 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.");
}