Ruby on Rails中的正则表达式

时间:2015-04-19 00:44:56

标签: ruby regex ruby-on-rails-3 ruby-on-rails-4

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

的结尾
example

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

2 个答案:

答案 0 :(得分:2)

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

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

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

DEMO

<强>更新

如果用户名不仅包含firstname,还包含middlename,lastname ...那么你可以使用下面的regex。 *在令牌(不是?* )之后+将前一个令牌变为“{1}}时重复前一个令牌零次或多次一个可选的。

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

答案 1 :(得分:1)

如何不需要重复char类:

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