Rya*_*ley 3 regex coordinates firebase firebase-security firebase-realtime-database
^([-+]?)([\d]{1,2})(((\.)(\d+)(,)))(([-+]?)([\d]{1,3})((\.)(\d+))?)$
Run Code Online (Sandbox Code Playgroud)
我试图使用上面的这个正则表达式来确认数据是一个有效的坐标。我无法让它与 Firebase 规则一起使用。当我在在线正则表达式测试器中运行正则表达式时,它工作正常,但 Firebase 规则似乎不接受它。
这是我的 Firebase 规则:
".validate": "newData.isString() && newData.val().matches(/^([-+]?)([\d]{1,2})(((\.)(\d+)(,)))(([-+]?)([\d]{1,3})((\.)(\d+))?)$/)"
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个工作?
您需要将转义反斜杠加倍,但老实说,您的表达式包含太多冗余分组结构。
用
.matches(/^[-+]?\\d{1,2}\\.\\d+,[-+]?\\d{1,3}(\\.\\d+)?$/)
Run Code Online (Sandbox Code Playgroud)
或完全避免反斜杠:
.matches(/^[-+]?[0-9]{1,2}[.][0-9]+,[-+]?[0-9]{1,3}([.][0-9]+)?$/)
Run Code Online (Sandbox Code Playgroud)
正则表达式将匹配这个在线演示中的字符串。
详情:
^- 字符串的开头(在Firebase regex 中,它仅在模式开头使用时是一个锚点)[-+]?- 1 或 0+或-[0-9]{1,2} - 1 或 2 位数字[.] - 一个点[0-9]+ - 1+ 位数字, - 逗号[-+]?- 1 或 0+或-[0-9]{1,3} - 1 到 3 位数字([.][0-9]+)?- 1 或 0 序列.和 1+ 数字(请注意,不支持非捕获组)$- 字符串锚点的结尾(仅当在模式结尾时,$匹配 Firebase 正则表达式中的字符串结尾)。| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |