2011-09-30 46 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 –