javascript 正则表达式日期早于 1970 年 1 月 1 日
javascript Regex dates before 1st jan 1970
我有这个注册。表达式
value.match(/^\/Date\(\d*[\+\-]?\d*\)\/$/))
我用来查找像这个例子这样的日期
/Date(2208988800000+0100)/
由于我无法理解当我有一个负值毫秒的日期(1970 年 1 月 1 日之前)时,正则表达式不起作用。
/Date(-2208988800000+0100)/
有什么建议吗?
问题是您的正则表达式不允许在数字上使用减号(1970 年之前的日期具有负时间值,因为时间值是从 1970 年 1 月 1 日午夜开始以毫秒为单位的偏移量)。需要在开头加上-?
:
value.match(/^\/Date\(-?\d*[\+\-]?\d*\)\/$/))
// Here --------------^^
var value = "/Date(-2208988800000+0100)/";
console.log(value.match(/^\/Date\(-?\d*[\+\-]?\d*\)\/$/));
旁注:我认为你们两个 \d*
都想成为 \d+
。您希望 +
/-
两侧至少有一个数字分隔时区偏移...
旁注 2:在 [\+\-]
中,实际上不需要反斜杠。 +
在 []
中并不特殊,而 -
仅在 []
中不在开头或结尾时才特殊。
正则表达式查找表单,您的表单现在是:
/
"Date" literally
(
zero or unlimited digets
a plus or minus character
zero or unlimited digets
closing brackets
/
您漏掉了减号:
^\/Date\(\-?\d+[\+\-]?\d+\)\/$
?
是所谓的量词,表示 1 次或 0 次。
进一步阅读:
regex101.com 是一个很好的实时测试正则表达式的游乐场。使用它并从底部的"quick reference"中获利。
您的正则表达式表示:
/Date( at the beginning followed by
0 or more digits followed by
+ or - sign followed by
0 or more digits followed by
)/ at the end
输入"/Date(-2208988800000+0100)/"
匹配
/Date( at the beginning followed by
0 or more digits followed by
+ or - sign followed by
0 or more digits
但是接下来就是“0100”前面的“+”了。因此,匹配失败。
你想要的reg exp大概是
/^\/Date\([\+\-]*\d*[\+\-]?\d*\)\/$/)
我有这个注册。表达式
value.match(/^\/Date\(\d*[\+\-]?\d*\)\/$/))
我用来查找像这个例子这样的日期
/Date(2208988800000+0100)/
由于我无法理解当我有一个负值毫秒的日期(1970 年 1 月 1 日之前)时,正则表达式不起作用。
/Date(-2208988800000+0100)/
有什么建议吗?
问题是您的正则表达式不允许在数字上使用减号(1970 年之前的日期具有负时间值,因为时间值是从 1970 年 1 月 1 日午夜开始以毫秒为单位的偏移量)。需要在开头加上-?
:
value.match(/^\/Date\(-?\d*[\+\-]?\d*\)\/$/))
// Here --------------^^
var value = "/Date(-2208988800000+0100)/";
console.log(value.match(/^\/Date\(-?\d*[\+\-]?\d*\)\/$/));
旁注:我认为你们两个 \d*
都想成为 \d+
。您希望 +
/-
两侧至少有一个数字分隔时区偏移...
旁注 2:在 [\+\-]
中,实际上不需要反斜杠。 +
在 []
中并不特殊,而 -
仅在 []
中不在开头或结尾时才特殊。
正则表达式查找表单,您的表单现在是:
/
"Date" literally
(
zero or unlimited digets
a plus or minus character
zero or unlimited digets
closing brackets
/
您漏掉了减号:
^\/Date\(\-?\d+[\+\-]?\d+\)\/$
?
是所谓的量词,表示 1 次或 0 次。
进一步阅读:
regex101.com 是一个很好的实时测试正则表达式的游乐场。使用它并从底部的"quick reference"中获利。
您的正则表达式表示:
/Date( at the beginning followed by
0 or more digits followed by
+ or - sign followed by
0 or more digits followed by
)/ at the end
输入"/Date(-2208988800000+0100)/"
匹配
/Date( at the beginning followed by
0 or more digits followed by
+ or - sign followed by
0 or more digits
但是接下来就是“0100”前面的“+”了。因此,匹配失败。
你想要的reg exp大概是
/^\/Date\([\+\-]*\d*[\+\-]?\d*\)\/$/)