我试图将以下表达式放入 matches 函数中,但我猜想在尝试编译规则时会出现错误。
^[a-zA-Z](([\._\-][a-zA-Z0-9])|[a-zA-Z0-9])*[a-z0-9]$
.validate
规则如下:
".validate": "newData.val() === auth.uid
&& newData.val().matches(^(?=.{5,10}$)(?!.*[._-]{2})[a-z][a-z0-9._-]*[a-z0-9]$)"
I get:
" Invalid escape: '\.'"
看来您无法在 Firebase 中使用环视,因此您的模式和整个方法应该调整以解决这一问题。
您当前的正则表达式需要字符串长度为 5 到 10 个符号,并且不允许 2 个连续符号.
, _
and -
。第一个条件应该在正则表达式之外使用一些代码进行检查,例如newData.val().length >= 5 && newData.val().length <= 10
第二个只需要重新分组和重新量化:
.matches(/^[a-z][a-z0-9]*([._-][a-z0-9]+)*$/)
查看正则表达式demo https://regex101.com/r/uR5eC0/1.
Details:
-
^
- 字符串的开头
-
[a-z]
- 一个小写字母(如果添加/i
最后,区分大小写)
-
[a-z0-9]*
- 零个或多个a-z
and 0-9
symbols
-
([._-][a-z0-9]+)*
- a .
, _
or -
随后是一个或多个(这需要[a-z0-9]
如果有则在最后.
, _
or -
字符串中)的字符来自0-9
and a-z
ranges
-
$
- 绳锚的末端。
请注意,您不需要将字符类中的字符转义为.
and _
里面不是特殊字符,并且-
括号表达式(字符类)的末尾或开头是文字连字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)