gpt4 book ai didi

regex - 排除正则表达式中的字符组合(如果找到组合,则正则表达式应该失败)

转载 作者:行者123 更新时间:2023-12-02 09:30:11 24 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式来验证数字序列,正则表达式应该只包含数字——唯一的规则是数字 0049 不允许出现在序列的开头。该序列的长度也被限制为只有 10 到 15 个字符

例子:

0049123456789 - Must Fail
0321123456789 - Allowed to succeed

我面临的问题是,如果在字符串的前 4 个位置中找到序列“0049”,我不确定如何强制使正则表达式失败。以下是我尝试过的一些模式。

使用的示例编号:0049123456789

^(^0049)|^(\d{10,15}+)$ - 与 0049 匹配,正则表达式验证成功

^((?<!(0049))|(\d{10,15}+))$ - 两个正则表达式替代捕获组都成功( (?<!(0049))(\d{10,15}+) ,将整个输入验证为成功输入

^([^0049])|^(\d{10,15}+)$ - 第二个捕获组 (\d{10,15}+) 标记数字组合成功,因为它符合只能是数字的规则,长度在 10 - 15 个字符内。

我对正则表达式一无所知 - 我怎么能强制使数字 0049123456789 的组合失败 - 只是因为在序列的开头找到了 0049

最佳答案

您可以使用以下正则表达式:

^(?!0049)\d{10,15}$

参见 regex demo

正则表达式分解:

  • ^ - 字符串开始
  • (?!0049) - 否定前瞻检查是否存在 0049紧跟在字符串的开头 - 如果找到,不返回任何匹配项
  • \d{10,15} - 10 到 15 位数字
  • $ - 字符串结束。

你的正则表达式:

  • ^(^0049)|^(\d{10,15}+)$ - 与 0049 匹配因为你要求它匹配 0049在字符串的开头(^ 中的 ^(^0049) 都是字符串开头的 anchor )

  • ^((?<!(0049))|(\d{10,15}+))$ - 自 ^((?<!(0049)) 以来的匹配项表示 如果字符串的开头没有以 0049 开头则匹配

  • ^([^0049])|^(\d{10,15}+)$ - 匹配作为第二个选择找到匹配,你是对的。但是,请注意 [^0049]是匹配除 0 以外的任何字符的否定字符类, 49 (它不会“否定”数字的序列)。

关于regex - 排除正则表达式中的字符组合(如果找到组合,则正则表达式应该失败),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34040830/

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