2011-09-30 35 views
2

如何验证字符串/ JSON值的格式为"\/Date(1239018869048)\/"?我知道我可能有一个序列化的JSON日期字符串,但因为JSON对象是动态的,我不知道哪个属性是序列化的JSON日期。如何验证字符串值格式为“/Date(1239018869048) /”?

所以我想知道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*)\)\/$/; 
+0

你的意思是字符串字面?你的意思是将字符串作为正则表达式吗?或者,你的意思是一个字面'日期'左括号,数字字符串x字符长,右括号? – Corbin

+0

我想知道一个字符串值是否以这种格式:/ Date(1239018869048)/。 – Tebo

+1

如果按照“这种格式”,你的意思是“匹配这个正则表达式”,你可以对它进行比较,因为它没有动态模式。如果这不是你的意思,那么我恐怕我很困惑。对于正则表达式匹配:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/match或者只是pattern.test(“some string”)例子:/^[0-9]+$/.test (“12345”) – Corbin

回答

4

在这里你去,队友:

json_obj = { 'foo' : 'bar', 'baz' : '/Date(1239018869048)/' } 

pattern = /^\/Date\((\d*)\)\/$/; 
for(e in json_obj) { 
    if (json_obj[e].match(pattern)) { 
     // date found 
    } 
} 
+1

可能值得一提的是OP:如果你想让它完全匹配,你可以使用:/^\/Date \((\ d *)\)\/$ /只会匹配只包含有效格式的字符串。如果没有^和$,它将匹配包含该格式任何位置的任何字符串。 – Corbin

+0

谢谢,我更新了条目。 – vzwick

+0

谢谢。有效。并感谢@Corbin的洞察和补充。 – Tebo

1

如果您的意思是验证字符串值是否会序列化为日期,则可以对正则表达式使用JavaScript支持。

这里http://www.w3schools.com/jsref/jsref_match.asp

看到,如果你的意思是验证一个解串化的值是一个日期,你可以使用Javascript角instanceof运算符。

看到这里https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/instanceof

+0

我知道正则表达式的存在。我会喜欢正则表达式。 – Tebo

+0

你可以在这里做一些Javascript正则表达式的基本测试http://www.regular-expressions.info/javascriptexample.html –