数据验证中的Regexmatch-在测试现场工作,但不是表

ndasle7k  于 2023-04-13  发布在  其他
关注(0)|答案(2)|浏览(81)

我正在尝试编写一个数据验证公式,以便允许以下格式。

DD/MM/YYYY - HH:MM:SS
DD/MM/YYYY HH:MM:SS
DD/MM/YYYY - HH:MM
DD/MM/YYYY HH:MM

我已经厌倦的正则表达式是^[0-3]\d\/[0-2]\d\/[12][90]\d\d\s(\-\s)?\d\d:\d\d(.+)?
图纸代码为=regexmatch(rept(A1, 1), "^[0-3]\d\/[0-2]\d\/[12][90]\d\\d\s(\-\s)?\d\d:\d\d(.+)?")
https://regex101.com/说这应该可以工作,但在google sheets中它继续说它不可以。
检查DD/MM/YYYYDD/MM/YYYY HH:MM(:SS)的部分可以工作。但是我不能让它检查两个组合文本之间的“-”和“”。
分解到分隔符检查,\d\s(\-\s)?\d[[:space:]](\-[[:space:]])?都不能在工作表中工作。
谢谢!
编辑:发现了这个问题,google sheets正在添加两种类型的空格,unicode 32和160,现在正在研究如何引用这两种类型。这就是为什么当将其粘贴到regex 101时代码可以工作,因为它只将其读取为字符32,而sheets将其视为32和160。
数据验证将键入的160个字符读取为32个字符。

gg58donl

gg58donl1#

由于闰年的问题,通过正则表达式实际 * 验证 * 你的日期是很困难的。如果你只是想 * 匹配 * 你指定的四个模式,那么用途:

^\d{2}\/\d{2}\/\d{4} (- )?\d{2}:\d{2}(:\d{2})?$
ilmyapht

ilmyapht2#

问题是uni char 160,或者Hex 00 A0,因为我不能在数据验证中使用这个字符的类型化版本,我需要使用\x{0A0}来避免处理这些类型的空格和-的每一种组合,我使用了以下内容:

=regexmatch(REGEXREPLACE(REPT(A15,1),"\x{0A0}"," "), "^[0-3]\d\/[0-2]\d\/[12][90]\d{2}( )? (- )?(- )?[0-2]\d:[0-5]\d(.+)?")

所以我让它用标准空格替换任何出现的\x{0A0}。然后继续将其与格式匹配。
感谢所有的反馈,迫使我真正弄清楚是什么打破了。

相关问题