我正在尝试将日期格式字符串(和输入日期字符串)分解为部分(标记)。
只要令牌有效,日期格式就可以使用令牌之间的任何分隔字符。日期/时间将被解析为格式,非字母数字字符将被转移到输出字符串中。我想从日期/时间格式字符串和输入日期/时间字符串中删除标记。
我需要在所有非字母数字字符集上拆分字符串
例如,假设我的日期格式字符串是:
'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']
谢谢大家!
答案 0 :(得分:4)
您希望匹配字母数字字符并在其他所有字符上拆分/排除,对吗?这将是([a-zA-Z0-9]+)
这样:
'dddd, MMMM D, YYYY h:mm A'.match(/([a-zA-Z0-9]+)/g)
返回:
["dddd", "MMMM", "D", "YYYY", "h", "mm", "A"]