我需要确保在Rails表单中人们正确输入他们的名字、中间名和姓。对于正则表达式的第一个想法是:
\A[[:upper:]][[:alpha:]'-]+( [[:upper:]][[:alpha:]'-]*)*\z
这将确保名称中的每个单词都以大写字母开头,后跟一个字母、连字符或撇号。
我第一个问题似乎与正则表达式没有多少关系,但我希望有一个可以复制的正则表达式来解决这个问题。在一个名字中,我应该检查的是字母、连字符和撇号吗?
我的第二个问题是,是否重要确保每个名字至少有1个大写字母?很多人输入全部小写的名字,我真的想避免这种情况,但是有时它是合法的吗?
这是我到目前为止的代码,它确保名称中至少有一个大写字母:
\A([[:alpha:]'-]+ )*[[:alpha:]'-]*[[:upper:]][[:alpha:]'-]*( [[:alpha:]'-]+)*\z
难道没有 [:name:] 方括号表达式吗? :)
更新:我将 .
和,
添加到允许的字符中,惊讶于我最初没有想到它们。这种正则表达式的情况肯定有很多人要处理!没有人为这类事情准备过正则表达式吗?