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

Web*_*rer 1 javascript regex date

我正在尝试将日期格式字符串(和输入日期字符串)分解为多个部分(标记)。

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

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

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

'dddd, MMMM D, YYYY h:mm A'
Run Code Online (Sandbox Code Playgroud)

我想要字符串中所有日期/时间标记的数组。我的输出应该是:

['dddd', 'MMMM', 'D', 'YYYY', 'h', 'mm', 'A']
Run Code Online (Sandbox Code Playgroud)

我尝试了几次,但我仍然不知道如何做到这一点。我能够想出正则表达式:

[^\w]|[_]
Run Code Online (Sandbox Code Playgroud)

它应该匹配[a-zA-Z0-9_]第一个替代项中不存在的任何字符,或者_按字面匹配第二个替代项。

我已经测试了这个正则表达式并且它确实有效,但是我如何正确使用它?

我尝试使用:

var format_tokens = display_format.match(/[^\w]|[_]/g);
Run Code Online (Sandbox Code Playgroud)

..当然,这让我返回:

format_tokens = [",", " ", " ", ",", " ", " ", ":", " "];
Run Code Online (Sandbox Code Playgroud)

..这应该是显而易见的...

那么如何求逆呢?我怎样才能得到想要的结果:

format_tokens = ['dddd', 'MMMM', 'D', 'YYYY', 'h', 'mm', 'A']
Run Code Online (Sandbox Code Playgroud)

谢谢大家!

Dav*_*hta 5

您想要匹配字母数字字符并拆分/排除其他所有内容,对吧?哪一个会是([a-zA-Z0-9]+)

这:

'dddd, MMMM D, YYYY h:mm A'.match(/([a-zA-Z0-9]+)/g)
Run Code Online (Sandbox Code Playgroud)

返回:

["dddd", "MMMM", "D", "YYYY", "h", "mm", "A"]
Run Code Online (Sandbox Code Playgroud)