Javascript 使用正则表达式将日期/时间字符串拆分为标记

Javascript 使用正则表达式将日期/时间字符串拆分为标记,javascript,regex,date,Javascript,Regex,Date,我试图将日期格式字符串和输入日期字符串分解为部分标记 日期格式可以在标记之间使用任何分隔字符,只要标记有效。日期/时间将解析为格式,非字母数字字符将带入输出字符串。我想从日期/时间格式字符串和输入日期/时间字符串中去掉标记 我需要拆分所有非字母数字字符集上的字符串 例如,假设我的日期格式字符串为: 'dddd, MMMM D, YYYY h:mm A' 我想要一个字符串中所有日期/时间标记的数组。我的输出应该是: ['dddd', 'MMMM', 'D', 'YYYY', 'h', 'mm',

我试图将日期格式字符串和输入日期字符串分解为部分标记

日期格式可以在标记之间使用任何分隔字符,只要标记有效。日期/时间将解析为格式,非字母数字字符将带入输出字符串。我想从日期/时间格式字符串和输入日期/时间字符串中去掉标记

我需要拆分所有非字母数字字符集上的字符串

例如,假设我的日期格式字符串为:

'dddd, MMMM D, YYYY h:mm A'
我想要一个字符串中所有日期/时间标记的数组。我的输出应该是:

['dddd', 'MMMM', 'D', 'YYYY', 'h', 'mm', 'A']
我试了几次,但我还是不知道该怎么做。我想出了正则表达式:

[^\w]|[_]
应匹配[a-zA-Z0-9]中未出现的任何字符作为第一个备选字符,或按字面意思匹配作为第二个备选字符

我已经测试了这个正则表达式,它确实有效,但是我如何才能正确地使用它呢

我尝试使用:

var format_tokens = display_format.match(/[^\w]|[_]/g);
…当然,这让我回想起:

format_tokens = [",", " ", " ", ",", " ", " ", ":", " "];
…这应该是显而易见的

那么我如何得到相反的结果呢?我如何获得以下方面的预期结果:

format_tokens = ['dddd', 'MMMM', 'D', 'YYYY', 'h', 'mm', 'A']
?


谢谢大家

您希望匹配字母数字字符,然后在其他所有内容上拆分/排除,对吗?这将是[a-zA-Z0-9]+

这:

返回:

["dddd", "MMMM", "D", "YYYY", "h", "mm", "A"]

您希望匹配字母数字字符,并在其他所有内容上拆分/排除,对吗?这将是[a-zA-Z0-9]+

这:

返回:

["dddd", "MMMM", "D", "YYYY", "h", "mm", "A"]

有什么原因不能使用吗?@william.taylor.09它们不仅仅是逗号,还有空格和冒号。@DanielFlint,谢谢,我疏忽了。在这种情况下,OP可以用逗号替换所有空格和冒号,然后进行拆分,但对于regexp可以执行的操作来说,这似乎很愚蠢。@william.taylor.09不幸的是,您建议的拆分并不适用于所有情况。用户可以使用任何有效的日期标记和所需的任何非字母数字字符定义自己的日期格式。如果他们真的想,他们甚至可以使用dddd?!嗯--D、 @YYYY$h:mm*A,我需要返回与上述示例相同的结果。您有什么原因不能使用吗?@william.taylor.09它们不仅在逗号上拆分,而且在空格和冒号上拆分。@DanielFlint,谢谢,我疏忽了。在这种情况下,OP可以用逗号替换所有空格和冒号,然后进行拆分,但对于regexp可以执行的操作来说,这似乎很愚蠢。@william.taylor.09不幸的是,您建议的拆分并不适用于所有情况。用户可以使用任何有效的日期标记和所需的任何非字母数字字符定义自己的日期格式。如果他们真的想,他们甚至可以使用dddd?!嗯--D、 @YYYY$h:mm*A我需要返回与上面示例相同的结果。哈哈哈!我怎么能监督这件事?谢谢你的快速回复。我刚刚在regex101中测试了这个,它完全符合我的要求,尽管我在接下来的5分钟内仍然无法接受你的答案!哈哈哈!我怎么能监督这件事?谢谢你的快速回复。我刚刚在regex101中测试了这个,它完全符合我的要求,尽管我在接下来的5分钟内仍然无法接受你的答案!