Rails Ruby 中的正则表达式

Regular Expression in Ruby on Rails

我需要创建一个正则表达式来验证一个人的名字和名字。第二名是可选的,因为有些人没有第二名。 space字符可以在两个名字之间,但不能是字符串的结尾

example

 "Juan Perez" is valid
 "Juan Perez " is invalid because there is a space character the end of the string

您可以使用以下使用可选组的正则表达式。

^[A-Za-z]+(?:\s[A-Za-z]+)?$
如果 space 后跟一个或多个字母,

(?:\s[A-Za-z]+)? 可选组将进行匹配。如果只有一个 space 存在,它将不匹配字符串。并且它还断言最后必须有一个字母表。

DEMO

更新:

如果用户名不仅包含名字,还包含中间名、姓氏...那么您可以使用下面的正则表达式。 * 重复前一个标记零次或多次,其中 ? 在标记之后( 不是 *+)将打开以前的标记作为可选标记。

^[A-Za-z]+(?:\s[A-Za-z]+)*$

不需要重复字符的方法怎么样class:

^\b(\s?[[:alpha:]]+)+$