Javascript - 匹配正则表达式的日期表示

时间:2018-03-04 17:20:49

标签: javascript regex

如何为以下内容编写正确的正则表达式:

/Date(1518238800000)/ - matches

jdsjdsj - no match

2017/03/12 - no match

12 - no match

Date() - no match

/Date(1218238800000)/ - matches

到目前为止我所拥有的是:

var res = str.match(/Date(\d*)/g);

如何修改正则表达式?

2 个答案:

答案 0 :(得分:1)

我假设您的字符串有点来自.NET序列化程序,如此处所述

How to parse ASP.NET JSON Date format with GWT

How to parse JSON to receive a Date object in JavaScript?

其中一个答案有一个你可能想要使用的复活功能。

如果没有,那么正则表达式将需要转义括号:

var str = '{ "date": "/Date(1218238800000)/" }'
var re = /Date\((\d*)\)/g // escaping the () from the date and capture the number
res = re.exec(str);

console.log(res[1])

更多日期和创建日期对象:

var str = '{ "date1": "/Date(1218238800000)/", "date2": "/Date(1218248800000)/" }'
var re = /Date\((\d*)\)/g // escaping the () from the date and capture the number

while (res = re.exec(str)) {
  var date = +res[1]; // convert
  console.log(new Date(date)) 
}

答案 1 :(得分:0)

您需要转义这样的特殊字符:



let regex = /\/Date\(\d+\)\//g;
console.log(regex.test("/Date(123455)/"), //true
  regex.test("Date()"), //false
  regex.test("afdjkh"), //false
  regex.test("/Date(38457843)/")) //true