【问题标题】:How do I validate that a string value is in the format "\/Date(1239018869048)\/"?如何验证字符串值的格式为“\/Date(1239018869048)\/”?
【发布时间】: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


【解决方案1】:

你来了,伙计:

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

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

【讨论】:

  • 可能值得一提 OP:如果你希望它完全匹配,你可以使用: /^\/Date((\d*))\/$/ 这将只匹配字符串仅包含该有效格式。如果没有 ^ 和 $,它将匹配任何包含该格式的字符串。
  • 谢谢。有效。也感谢@Corbin 的洞察力和补充。
【解决方案2】:

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

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

如果你的意思是验证一个反序列化的值是一个日期,你可以使用 Javascripts instanceof 操作符。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
  • 2021-01-21
相关资源
最近更新 更多