寻求验证含GMT+中文时区标识的日期时间格式的正则表达式
验证特定日期时间格式的正则解决方案
嘿,我来帮你搞定这个日期格式的正则验证问题!先仔细拆解下你给的示例字符串 Wed Oct 25 2017 12:59:00 GMT+0800 (涓浗鏍囧噯鏃堕棿) 的结构,这样我们就能精准匹配每一部分:
- 星期缩写:3个英文字母(比如
Wed) - 月份缩写:3个英文字母(比如
Oct) - 日期:1或2位数字(比如
25) - 年份:4位数字(比如
2017) - 时间:
HH:MM:SS格式的时分秒(比如12:59:00) - 时区标识:
GMT开头,后跟+或-加4位数字(比如+0800) - 括号内的时区名称:括号包裹的任意字符(这里虽然是乱码,但正则可以统一匹配)
完整正则表达式
根据上面的结构,我整理了一个精准匹配的正则:
^[A-Za-z]{3} [A-Za-z]{3} \d{1,2} \d{4} \d{2}:\d{2}:\d{2} GMT[+-]\d{4} \([^)]+\)$
正则各部分解释
^:匹配字符串开头[A-Za-z]{3}:匹配3位大小写字母(对应星期和月份缩写)\d{1,2}:匹配1或2位数字(日期)\d{4}:匹配4位数字(年份)\d{2}:\d{2}:\d{2}:匹配时分秒格式GMT[+-]\d{4}:匹配GMT时区标识,允许+或-后跟4位数字\([^)]+\):匹配括号及其中的任意内容([^)]+表示匹配除了右括号之外的所有字符)$:匹配字符串结尾
测试示例
如果你用JavaScript测试的话,可以这样写:
const dateStr = 'Wed Oct 25 2017 12:59:00 GMT+0800 (涓浗鏍囧噯鏃堕棿)'; const regex = /^[A-Za-z]{3} [A-Za-z]{3} \d{1,2} \d{4} \d{2}:\d{2}:\d{2} GMT[+-]\d{4} \([^)]+\)$/; console.log(regex.test(dateStr)); // 输出 true
可选调整项
- 如果你的日期字符串中星期和月份缩写只可能是大写开头(比如
Wed而非wed),可以把正则里的[A-Za-z]改成[A-Z][a-z]{2},这样匹配更严格:^[A-Z][a-z]{2} [A-Z][a-z]{2} \d{1,2} \d{4} \d{2}:\d{2}:\d{2} GMT[+-]\d{4} \([^)]+\)$ - 如果括号内的内容可能为空,把
[^)]+改成[^)]*即可。
内容的提问来源于stack exchange,提问作者eddie
相关产品推荐
相关产品推荐

