相关疑难解决方法(0)

Firestore 安全规则正则表达式

我试图评估string公司的FireStore安全规则基础上,匹配的正则表达式功能

我的代码是 username.matches('^(?!\.)(?!_)(?!.*\.$)(?!.*?\.\.)[a-z0-9_.]+$')

在线使用正则表达式模拟器它正在工作

https://regex101.com/r/bDXMg3/2/

但是在安全规则中使用相同的语法会引发大量错误

在此处输入图片说明

我试图然后双重逃避每个 .

使用代码 username.matches('^(?!\\.)(?!_)(?!.*\\.$)(?!.*?\\.\\.)[a-z0-9_.]+$')

它只显示一个错误(开头的红色 ^ 符号),但随后它给了我以下错误

在此处输入图片说明

Invalid regular expression pattern. Pattern: ^(?!\.)(?!_)(?!.*\.$)(?!.*?\.\.)[a-z0-9_.]+$.
Run Code Online (Sandbox Code Playgroud)

我的目标是:

  • 不以.或开头_
  • 不以a结尾 .
  • 不允许.连续两个
  • 只有小写letter charactersnumbers

谁能让我知道我做错了什么?

firebase-security google-cloud-firestore

4
推荐指数
1
解决办法
2536
查看次数

使用正则表达式的 Github 用户名约定

我已经尝试在 Go 中使用正则表达式转换 Github 用户名约定有一段时间了,但我无法做到。另外,用户名长度不应超过 39 个字符

以下是来自 Github 的用户名约定

用户名只能包含字母数字字符或单个连字符,并且不能以连字符开头或结尾。

和长度

用户名太长(最多 39 个字符)。

这是我写的代码。你可以在Go Playground中查看

package main

import (
    "fmt"
    "regexp"
)

func main() {
    usernameConvention := "^[a-zA-Z0-9]*[-]?[a-zA-Z0-9]*$"

    if re, _ := regexp.Compile(usernameConvention); !re.MatchString("abc-abc") {
        fmt.Println("false")
    } else {
        fmt.Println("true")
    }
}

Run Code Online (Sandbox Code Playgroud)

目前,我可以实现这些:

a-b // true - Working!
-ab // false - Working!
ab- // false - Working!
0-0 // true - Working!
Run Code Online (Sandbox Code Playgroud)

但我面临的问题是我找不到适用于以下场景的正则表达式模式:

a-b-c // false - Should be true
Run Code Online (Sandbox Code Playgroud)

此外,它必须在 39 个字符以内,我发现我们可以使用 …

regex go

1
推荐指数
1
解决办法
4456
查看次数