【发布时间】:2011-11-28 07:51:22
【问题描述】:
如何验证字符串/JSON 值的格式是否为 "\/Date(1239018869048)\/"?
我正在遍历一个 JSON 对象,我知道我可能有一个序列化的 JSON 日期字符串,但由于 JSON 对象是动态的,我不知道哪个属性是序列化的 JSON 日期。
所以我想知道 JSON 属性值是否会验证为 JSON 序列化日期的格式。
更新 #1
在使用正则表达式之前检查它是否是字符串的实例会很好,因为整数会引发异常。这是@vzwick给出的答案的补充。再次感谢。
json_obj = { 'foo' : 'bar', 'baz' : '/Date(1239018869048)/' }
pattern = /^\/Date\((\d*)\)\/$/;
for(e in json_obj) {
if (json_obj[e].constructor === String) {
if (json_obj[e].match(pattern)) {
// date found
}
}
}
更新 #2
尝试不同的值后,我发现我们有负数。所以图案可以 现在的样子;
pattern = /^\/Date\((-?\d*)\)\/$/;
【问题讨论】:
-
你的意思是字面上的那个字符串吗?您的意思是将文字字符串作为正则表达式吗?还是您的意思是文字“日期”左括号,数字字符串 x 字符长,右括号?
-
我想知道一个字符串值是否是这种格式:/Date(1239018869048)/。
-
如果“in this format”是指“matches this regexp”,你可以做一个比较,因为它没有动态模式。如果这不是你的意思,那我恐怕我很困惑。对于正则表达式匹配:developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… 或只是 pattern.test("some string") 示例:/^[0-9]+$/.test("12345")
-
我会喜欢与该格式匹配的正则表达式。注意:括号内的数字是动态的,只能用数字表示。
标签: javascript regex json validation date