正则表达式的全名

hol*_*den 0 regex validation ruby-on-rails ruby-on-rails-3

我最近在表单中收到了很多名字条目.虽然也许我应该有2个单独的名字和姓氏字段,但这在我看来总是有点多.但我想尝试获得一个全名,基本上只能通过至少有一个空格来确定.

我想出了这个,但我想知道是否有人有更好的,可能更简单的解决方案?

/([a-zA-Zàáâäãåèéêëìíîïòóôöõøùúûüÿýñç?šžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆ?ŠŽ?ð,.'-]{2,}) ([a-zA-Zàáâäãåèéêëìíîïòóôöõøùúûüÿýñç?šžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆ?ŠŽ?ð,.'-]{2,})/
Run Code Online (Sandbox Code Playgroud)

这基本上是这个/([a-zA-Z,.'-]) ([a-zA-Z,.'-])/加上unicode的支持.

Lac*_*ter 7

我首先要确保你真的需要别人给你一个姓氏.这是真正的要求吗?如果没有,我会跳过它,因为它增加了不必要的复杂性和进入障碍.如果它确实是一个要求,那么在UI中使用单独的名字和姓氏字段可能是明确的.

事实上,你没有这样做,这表明你可能并不像你想象的那样真正需要姓氏.

要回答您的原始问题,这个表达式可能会在没有猜测的情况下为您提供所需的内容:

/[\w]+([\s]+[\w]+){1}+/
Run Code Online (Sandbox Code Playgroud)

它检查字符串是否包含至少2个由空格分隔的单词.就像Tim Pietzcker所指出的那样,验证单词本身很容易出错.