Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匹配所有美国日期格式的Javascript正则表达式_Javascript_Regex - Fatal编程技术网

匹配所有美国日期格式的Javascript正则表达式

匹配所有美国日期格式的Javascript正则表达式,javascript,regex,Javascript,Regex,我试图将美国所有可能的格式匹配到一个正则表达式。可能吗?怎么做 以下是可能的格式: 2017/09/15 2017.09.15 2017-09-15 09/15/2017 09.15.2017 09-15-2017 9/15/2017 9.15.2017 9-15-2017 2017/9/15 2017-9-15 2017.09.15 但我也需要这些: 09/15 09.15 09-15 我已经尝试过这个/(0?[1-9]|[12][0-9]|[3[01])[\/\-\.](0?[1-9][

我试图将美国所有可能的格式匹配到一个正则表达式。可能吗?怎么做

以下是可能的格式:

2017/09/15
2017.09.15
2017-09-15
09/15/2017
09.15.2017
09-15-2017
9/15/2017
9.15.2017
9-15-2017
2017/9/15
2017-9-15
2017.09.15
但我也需要这些:

09/15
09.15
09-15

我已经尝试过这个
/(0?[1-9]|[12][0-9]|[3[01])[\/\-\.](0?[1-9][1241[012])[\/\-\.]\d{4}/
但它不起作用

这对于一个单一的正则表达式来说将是一个痛苦的任务,无论语言和风格如何,因为混合排序要求您对每个Y、M、d组件都有不同长度的标记,但这些组件的语义都有可接受值的特定限制。例如,在2位数的首字母形式中,即月份首字母,其值不能大于12。但在4位数形式中,年份优先,最大值仅受要支持的最大年份的约束。然后,你必须在第二个位置考虑,如果一年,因为月是第二,12的极限,否则如果第一个月的极限是31。
你发布的努力远远不是最终答案。我强烈建议在turing complete中引入一个数据清理步骤,在继续这条路之前,根据有效值识别和排序每个令牌。否则,请解释为什么这不是一个选项。

试试这个,应该可以:
\d+(\/\124;\.\ 124;-)+.\ d

你能把你试图解决问题的
javascript
包括进去吗?“我正在尝试匹配…”在哪里?我没有看到javascript代码。javascript代码并不重要。我需要一个与这些情况匹配的正则表达式。@HailHydra OP现在提供了用于创建
rexep
对象的正则表达式文本Javascript代码。(我认为从这里开始,您可以安全地假设它被传递到字符串的
match
方法中,或者对列表中提供的格式的字符串调用它的
exec
方法。)+1;此外,正则表达式不能强制第一个和第二个分隔符之间的匹配(从而允许类似于
2017-09.07
),因为常规语言不能使用堆栈来记住字符。您必须使用每个匹配的分隔符集显式地拼写出完整的表单,然后使用管道连接。好的,我可以将其拆分为两个正则表达式。一个匹配一个部分,另一个匹配另一个部分。我认为被接受的答案是不正确的。例如,您还将匹配“2015-10-23-132”、“1-1-Whatthehellisthedoinghere132”。引用JWZ的话,“有些人在遇到问题时会想‘我知道,我会使用正则表达式。’现在他们有两个问题。”。