我正在尝试匹配不包含任何特殊字符的空格分隔名称。名字是强制性的,中间名和姓氏是可选的。此外,名称可以全部大写,但不能全部小写,每个名称(名字、中间名、姓氏)的第一个字符是大写字母。
我正在使用以下正则表达式,但它似乎不起作用:
"[A-Z]\w+\s(?:[A-Z]\w+?:)?\s(?:[A-Z]\w+?:)?"
编辑:这就像一个宝石: "[A-Z]\w+(?:\s[A-Z](\w+)?)?(?:\s[A-Z](\w+)?)?"
你想要的是
^[A-Z]w+(?:s[A-Z]w+?)?s(?:[A-Z]w+?)?$
匹配字符串的开头和结尾(如果您的名字是自己来的)。否则,如果它嵌入到文本中,那么你想要类似的东西
s[A-Z]w+(?:s[A-Z]w+?)?s(?:[A-Z]w+?)?[s.,;:]