我需要创建一个正则表达式来验证一个人的名字和第二个名字。第二个名称是可选的,因为有人没有第二个名字。空格字符可以在两个名称之间,但不能是字符串
的结尾example
"Juan Perez" is valid
"Juan Perez " is invalid because there is a space character the end of the string
答案 0 :(得分:2)
您可以使用以下使用可选组的正则表达式。
^[A-Za-z]+(?:\s[A-Za-z]+)?$
如果有一个空格后跟一个或多个字母, (?:\s[A-Za-z]+)?
可选组将进行匹配。如果只存在一个空格,它将不匹配字符串。并且它声称最后必须有一个字母表。
<强>更新强>
如果用户名不仅包含firstname,还包含middlename,lastname ...那么你可以使用下面的regex。 *
在令牌(不是?
或*
)之后+
将前一个令牌变为“{1}}时重复前一个令牌零次或多次一个可选的。
^[A-Za-z]+(?:\s[A-Za-z]+)*$
答案 1 :(得分:1)
如何不需要重复char类:
^\b(\s?[[:alpha:]]+)+$