【问题标题】:Regexp with prefix and constraints带有前缀和约束的正则表达式
【发布时间】:2021-08-13 09:38:14
【问题描述】:

我正在尝试创建一个执行以下操作的正则表达式。

所以我有一个具有匹配值的键,但键本身有一些限制。 一个键可以有一个最多 253 个字符的可选键前缀,而普通键最多可以有 63 个字符。键前缀用斜杠分隔。

键前缀也只能有以下字符集:[a-z0-9A-Z\.] 而关键部分使用以下字符集:[a-z0-9A-Z\_\.\-]

所以这个格式

(key-prefix)/(key) : (value)

我的问题是我不擅长正则表达式。我已经设法通过以下方法解决了关键部分

^[A-Za-z0-9][_0-9A-Za-z-]{0,62}$

我知道我必须做一些涉及分组的事情才能获得前缀。下面是这样的,但是当我尝试添加另一个组时它会停止匹配。

(^[A-Za-z0-9][_0-9A-Za-z-]{0,252}$\/)?(^[A-Za-z0-9][_0-9A-Za-z-]{0,62}$)

【问题讨论】:

  • 请提供几个测试用例,看看你到底想得到什么。

标签: regex validation


【解决方案1】:

您可以将正则表达式设置为(^[A-Za-z0-9][_0-9A-Za-z-]{0,252}\/[A-Za-z0-9][_0-9A-Za-z-]{0,62}$) 请访问https://regex101.com/r/GBNe14/1 并尝试不同的组合。

【讨论】:

  • 感谢您的快速回答。但是,此正则表达式仅在键前缀存在时才匹配。斜线“/”之前的任何内容(如果存在)应该是可选的。如果存在,则最多应为 253 个字符
  • 好的@Lucas 你可以试试这个(^([A-Za-z0-9][_0-9A-Za-z-]{0,252})?\/[A-Za-z0-9][_0-9A-Za-z-]{0,62}$) 和实验访问regex101.com/r/1JGj4X/1 如果你想要精确的253个字符然后将正则表达式设置为(^([A-Za-z0-9][_0-9A-Za-z-]{252})?\/[A-Za-z0-9][_0-9A-Za-z-]{0,62}$)
  • 我尝试了您建议的第二个,并稍微移动了一下。非常感谢你。我最终得到了一个似乎满足我要求的表达式:)
猜你喜欢
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
相关资源
最近更新 更多