REGEX-数据验证

时间:2019-12-09 01:55:30

标签: regex google-sheets google-sheets-formula array-formulas

我有以下Google电子表格。

Google Spreadsheet

当用户在名为“单位标准”的工作表A列的任何单元格中输入名称时,我希望他们以特定格式输入该名称。也就是说,姓氏以大写字母开头,然后是逗号,然后是标题大写的名字,然后如果以不同的名称知道了姓氏,那么该名称在方括号中就是标题的大小写,例如

  • 布什,乔治
  • 唐纳德·特朗普(TRUMP)
  • 克林顿,威廉(比尔)
  • 卡特,詹姆斯(吉米)
  • 史密斯·琼斯,约翰
  • ZETA-JONES,凯瑟琳(凯特)

其他人为我提供了以下代码,这些代码已作为数据验证添加到A列中。

=REGEXMATCH(A10,"^[A-Z]+\b[',']\s[A-Z]{1}[a-z]+\b(\s([A-Z][a-z]+\b))?$")

通过下图可以看到某些输入违反了规定,因此公式不太正确。

Data Validation

我希望代码有所帮助。

2 个答案:

答案 0 :(得分:2)

此正则表达式匹配您提出的所有情况:

[A-Z][A-Z' ]+(-[A-Z' ]+)*, [A-Z][a-z]+( \([A-Za-z]+\))?

enter image description here

编辑:添加了注释中建议的案例。

答案 1 :(得分:1)

尝试:

=ARRAYFORMULA(REGEXMATCH(A1:A10, "^([A-Z' -]+), ([A-Z]{1}[a-z]+)( \([A-ZA-z]+\))?$"))

0