gpt4 book ai didi

javascript - 使用正则表达式检查可选字符集

转载 作者:行者123 更新时间:2023-11-29 18:47:46 28 4
gpt4 key购买 nike

我有以下格式的日期:

October 4, 2019 10:30 am

这个日期需要分解成月、日、年和时间。时间是可选的。所以换句话说,这也应该是有效的:

October 4, 2019

不幸的是,如果我确实尝试从字符串中省略时间,则在使用以下模式时我会得到未定义的结果:

const match = /(\w+)( [^.]+)?, ([0-9]{4}) ((?:0[1-9]|1[0-2]):[0-9]{2} (?:am|pm))?/.exec(dt);

我希望无论是否使用我在示例字符串中显示的时间部分,它都能正常工作。我寻找了一些具有相同问题的线程,据我了解,这应该适用于 ?

那么对于这种情况,我做错了什么?

谢谢

最佳答案

可选组之前的空格仍然是必需的,因此您与第二个字符串不匹配。

将空格放入组中:

/(\w+)( [^,]+)?, ([0-9]{4})( (?:0[1-9]|1[0-2]):[0-9]{2} (?:am|pm))?/ 
^

参见 regex demo .

请注意,我还认为 [^.]+ 必须是 [^,]+逗号 以外的任何 1 个或多个字符.

您可以将模式进一步缩短为

/(\w+)( [^,]+)?, (\d{4})( (?:0[1-9]|1[0-2]):\d{2} [ap]m)?/

请注意,将文字空格替换为 \s+ 以匹配任何 1+ 空格可能是个好主意,如果输入中存在硬空格或常规空格,请不要担心:

/(\w+)(\s+[^,]+)?,\s+(\d{4})(\s+(?:0[1-9]|1[0-2]):\d{2}\s+[ap]m)?/

关于javascript - 使用正则表达式检查可选字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com