为什么我输入的任何正常单词都会返回 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.");
}
我肯定错过了什么。
你需要的是[a-zA-Z0-9\\s]+
. +
在最后添加。
在正则表达式中,您使用+
范围末尾的 来指定“多个”,而在您的情况下,您仅探测长度为 1 的表达式。
试试这个正则表达式“^[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.");
}
因为您应该在正则表达式的末尾添加“+”,否则您只请求匹配一个字符。