用于验证大写字母全名的正则表达式(包括 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 字符)?的主要内容,如果未能解决你的问题,请参考以下文章