用于验证大写字母全名的正则表达式(包括 unicode 字符)?

Posted

技术标签:

【中文标题】用于验证大写字母全名的正则表达式(包括 unicode 字符)?【英文标题】:Regular Expression for validating full name in capital letters (unicode characters included)? 【发布时间】:2013-09-26 00:06:15 【问题描述】:

我正在创建一个 Google 表单,并且正在使用文本/段落文本选项中的数据验证功能。我需要验证人名。名称需要用大写字母填写,并且可能有可变数量的单词。名称可以是“FIRSTNAME LASTNAME”或“FIRSTNAME MIDDLENAME LASTNAME”或“FIRSTNAME MIDDLENAME1 MIDDLENAME2 LASTNAME”等。

另一件事是,一些名称包含来自土耳其语和葡萄牙语字母的字符,并且将来可能还包含来自西里尔字母的字符。如何在正则表达式中包含所有这些可能性?如果能对所使用的表达方式给出解释,那就太好了。

PS:我检查了Regular expression for validating names and surnames?,但是1.它只对Name Surname有效,2.它也包括小写字母。

【问题讨论】:

为什么他们需要大写?大多数人不会用大写字母写自己的名字。 因为名称是用于印刷的名片,我们在其上使用大写字母。输出文件将直接发送到打印机。 很公平。但是你不能也接受混合大小写然后在内部转换为大写吗? (即,您使用正则表达式的任何语言都可能有strtoupper() 或类似的?) 【参考方案1】:

其中一个可能会给你一些想法 -

 # --------------------
 # To capture names, first/last name required
 # \s*\pLu+(?:\s+\pLu+)*\s+\pLu+\s*
 # --------------------

 \s*                       # some boundry                  (optional)
 ( \pLu+ )               # (1), upper case first name    (required) 
 (                         # (2), upper case middle names  (optional)
      (?: \s+ \pLu+ )*
 )
 \s+                       # some boundry                  (required) 
 ( \pLu+ )               # (3), upper case last name     (required) 
 \s*                       # some boundry                  (optional)


 # --------------------
 # Or, if no boundry and only first name required
 # \pLu+(?:\s+\pLu+)*
 # --------------------

 \pLu+ 
 (?: \s+ \pLu+ )*


 # --------------------
 # Or, if no boundry and first/last name required
 #\pLu+(?:\s+\pLu+)+
 # --------------------

 \pLu+ 
 (?: \s+ \pLu+ )+

【讨论】:

以上是关于用于验证大写字母全名的正则表达式(包括 unicode 字符)?的主要内容,如果未能解决你的问题,请参考以下文章

Java - 全名的正则表达式

正则表达式全名验证

用于密码验证的正则表达式

用于密码验证的正则表达式 [重复]

用于验证本地化字符串中的字母和数字的正则表达式

用于密码验证的正则表达式,仅特定字符 [重复]