Firebase日期格式匹配

Firebase日期格式匹配,firebase,firebase-realtime-database,date-format,firebase-security,Firebase,Firebase Realtime Database,Date Format,Firebase Security,如何使用Firebase验证“2017年9月28日”类型的日期格式? 我尝试了以下方法,但似乎不正确: ".validate": "newData.isString() && newData.val().matches(/^[\w\][\s]([0-3][0-9])[,\s](19|20)[0-9][0-9]$/)" 谢谢更新: 正如Firebaser Frank在评论中解释的那样,反斜杠需要避免。对规则进行这些更改,并进行一些其他小的更正,结果

如何使用Firebase验证“2017年9月28日”类型的日期格式? 我尝试了以下方法,但似乎不正确:

".validate": "newData.isString() &&
                newData.val().matches(/^[\w\][\s]([0-3][0-9])[,\s](19|20)[0-9][0-9]$/)"
谢谢更新:

正如Firebaser Frank在评论中解释的那样,反斜杠需要避免。对规则进行这些更改,并进行一些其他小的更正,结果是:

".validate": "newData.isString() &&
             newData.val().matches(/^[\\w]+[\\s][0-3][0-9][,][\\s](19|20)[0-9][0-9]$/)"

我使用Firebase控制台中的规则模拟器对此进行调试。当我粘贴您的验证规则时,
\w
\s
被拒绝为“无效转义”。我不知道这是为什么。这表明他们应该被接受。您是否能够使用
\w
\s
成功发布您的规则?我不能

我做了一些改变来解决这个问题。我还更改了
[,\s]
,因为在您2017年9月28日的
示例中,逗号后面有空格

  ".validate": "newData.isString() &&
            newData.val().matches(/^[A-Z][a-z]+ [0-3][0-9], (19|20)[0-9][0-9]$/)"
更新:

正如Firebaser Frank在评论中解释的那样,反斜杠需要避免。对规则进行这些更改,并进行一些其他小的更正,结果是:

".validate": "newData.isString() &&
             newData.val().matches(/^[\\w]+[\\s][0-3][0-9][,][\\s](19|20)[0-9][0-9]$/)"

我使用Firebase控制台中的规则模拟器对此进行调试。当我粘贴您的验证规则时,
\w
\s
被拒绝为“无效转义”。我不知道这是为什么。这表明他们应该被接受。您是否能够使用
\w
\s
成功发布您的规则?我不能

我做了一些改变来解决这个问题。我还更改了
[,\s]
,因为在您2017年9月28日的
示例中,逗号后面有空格

  ".validate": "newData.isString() &&
            newData.val().matches(/^[A-Z][a-z]+ [0-3][0-9], (19|20)[0-9][0-9]$/)"

你可能需要两次逃逸。参见@FrankvanPuffelen中的示例:啊,是的!我现在想起来你对上一个问题的解释。我将更新答案。抱歉,我忘记更新它,但我实际使用了“\/w”,因为firebase错误地输出了第一个版本。是啊,文件上说可以这样使用真奇怪。也许我遗漏了什么。@dre_84w934:请查看我的更新。FvP解释说反斜杠需要转义。@dre_84w934在SO中表示感谢的正确方法是使用票数计数器下方的复选标记将解决问题的答案标记为正确。您可能需要两次转义。参见@FrankvanPuffelen中的示例:啊,是的!我现在想起来你对上一个问题的解释。我将更新答案。抱歉,我忘记更新它,但我实际使用了“\/w”,因为firebase错误地输出了第一个版本。是啊,文件上说可以这样使用真奇怪。也许我遗漏了什么。@dre_84w934:请查看我的更新。FvP解释说反斜杠需要转义。@dre_84w934在SO中表示感谢的正确方法是使用投票计数器下方的复选标记,将解决问题的答案标记为正确。