我有一个单元格,我想测试它是否符合特定模式:3-4 个字母数字、减号、3-4 个字母数字、减号、4 位数字、减号、1 位或多位数字。
换句话说,我希望“TEST-TST-1234-33”通过,但“TST-12345343”或其他任何东西失败。
正则表达式很简单:^[A-Z0-9]{3,4}-[A-Z0-9]{3,4}-[:digit:]{4}-[:digit:]+$
。问题是我找不到任何东西来测试单元格是否完全符合该特定格式。例如:
= IF(CELL_PASSES_REGEX(A2, "^[A-Z0-9]{3,4}-[A-Z0-9]{3,4}-[:digit:]{4}-[:digit:]+$"), "pass", "fail")
答案1
您可以直接使用 MATCH() 函数,也可以将 MATCH() 与以下函数之一结合使用信息功能。如果正则表达式匹配,MATCH() 将返回 1,否则返回 #N/A 错误。对于布尔结果,将 MATCHES() 嵌入 ISERROR() 或 ISNUMBER()。如果正则表达式匹配,ISNUMBER() 将返回 true,而 ISERROR 则相反,因此 ISNUMBER() 可能是反映某个单元格是否匹配正则表达式的最佳选择:
=ISNUMBER(MATCH("^[:alnum:]{3,4}-[:alnum:]{3,4}-[:digit:]{4}-[:digit:]+$";A2))