下面提到的正则表达式用于验证Java中的用户输入。
username.matches("^\\p{L}+[\\p{L}\\p{Z}.']+")
正则表达式可用于多个字符输入,但不能用于单个字符输入。
由于'+'表示一个或多个字符,我很困惑如何将一个字符输入作为有效输入。
答案 0 :(得分:2)
这是因为正则表达式中的两个部分都至少需要一个字符(请参见正则表达式末尾的+
)。如果您希望该部分是可选的,则应改为*
。
答案 1 :(得分:1)
您的正则表达式至少需要2个字符。
“ ^ \ p {L} +”-至少1
“ [\ p {L} \ p {Z}。'] +”-至少1
“ +”表示一个或多个字符。
答案 2 :(得分:1)
您拥有的正则表达式将匹配2个或更多符号。原因是,这是一个(或多个)符号:
\\p{L}+
这是符号2(或更多):
[\\p{L}\\p{Z}.']+
您很可能希望最后一部分为“ 0或更大”,例如:
"^\\p{L}+[\\p{L}\\p{Z}.']*"