我正在尝试编写一个数据验证公式,以便允许以下格式。
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/YYYY
和DD/MM/YYYY HH:MM(:SS)
的部分可以工作。但是我不能让它检查两个组合文本之间的“-”和“”。
分解到分隔符检查,\d\s(\-\s)?\d
和[[:space:]](\-[[:space:]])?
都不能在工作表中工作。
谢谢!
编辑:发现了这个问题,google sheets正在添加两种类型的空格,unicode 32和160,现在正在研究如何引用这两种类型。这就是为什么当将其粘贴到regex 101时代码可以工作,因为它只将其读取为字符32,而sheets将其视为32和160。
数据验证将键入的160个字符读取为32个字符。
2条答案
按热度按时间gg58donl1#
由于闰年的问题,通过正则表达式实际 * 验证 * 你的日期是很困难的。如果你只是想 * 匹配 * 你指定的四个模式,那么用途:
ilmyapht2#
问题是uni char 160,或者Hex 00 A0,因为我不能在数据验证中使用这个字符的类型化版本,我需要使用
\x{0A0}
来避免处理这些类型的空格和-的每一种组合,我使用了以下内容:所以我让它用标准空格替换任何出现的
\x{0A0}
。然后继续将其与格式匹配。感谢所有的反馈,迫使我真正弄清楚是什么打破了。