gpt4 book ai didi

ruby-on-rails - 正则表达式在第一次检查后不检查第一个字符

转载 作者:行者123 更新时间:2023-12-02 18:01:54 25 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式:

  1. 仅允许使用数字、小写字母以及“-”和“_”。
  2. 字符串只能以:字母、数字或“uuid:”开头
  3. 字符串中必须至少包含一个字母。
  4. 它必须至少包含 2 个字符。

我设法创建了这样一个正则表达式: \A(?:uuid:|[a-z0-9])(?=(.*[a-z])){1,}(?:\w |-)+\z我只是不明白为什么如果第一个字符是字母,则不会考虑它,因此它不会通过,例如:a1。以及为什么它允许大写字母 AA。

测试:https://rubular.com/r/Q5gEP15iaYkHYQ

预先感谢您的帮助

最佳答案

您还可以使用从开头开始至少匹配 2 个字符的交替来获取无需环视的匹配项。

如果您不想匹配大写字符 A-Z,则可以省略 /i 进行不区分大小写的匹配。

\A(?:uuid:|[a-z][a-z0-9_-]|[0-9][0-9_-]*[a-z])[a-z0-9_-]*\z

说明

  • \A 字符串开头
  • (?: 非捕获组
    • uuid:字面匹配
    • | 或者
    • [a-z][a-z0-9_-] 匹配字符 a-za-z 之一 0-9 _ -
    • | 或者
    • [0-9][0-9_-]*[a-z] 匹配数字,可选字符 0-9 _ -,然后a-z
  • ) 关闭非捕获组
  • [a-z0-9_-]* 匹配可选字符 a-z 0-9 _ -
  • \z 字符串结尾

Regex rubular demo

关于ruby-on-rails - 正则表达式在第一次检查后不检查第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74183157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com