gpt4 book ai didi

java - 正则表达式量词语句失败

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

我需要我的正则表达式语句来执行以下操作:需要:

  • a-z 0-多次,
  • 0-9 0-3 次,
  • & 0-多次,
  • ""0-1 次,
  • 至少包含 8 个字符。

我还使用这个网站来测试我的代码 - https://regexr.com

我的正则表达式:

([a-zA-Z&]*[0-9]{0,3}[\s]?)\w{8,}

这些应该有效:

abcD &EFG,
ABCde f123,
&&12ADSD&&.

这些不应该:

a bcD &EFG,
AB5Cde f123,
&&12ADSD&&34,
1234567,
nope.

问题是我的正则表达式将接受任意数量的数字,无论我对其进行限制,并且它会接受单词中间的空格,但不可预测,我不知道为什么。

我是正则表达式新手,所以请对我温柔一些

最佳答案

当前模式的开始([a-zA-Z&]*[0-9]{0,3}[\s]?)\w{8,}有量词 0+ 次、0-3 次或可选。

最后它应该匹配至少 8 次以上的单词字符,而这不会匹配任何示例。

您可以使用否定前瞻 (?!断言没有出现 4 个数字或 2 个空格,然后重复匹配字符类中列出的 8 次以上。

^(?!(?:[^\r\n0-9]*[0-9]){4})(?!(?:\S* ){2})[a-zA-Z0-9 &]{8,}$
  • ^字符串开头
  • (?!负向前看,断言右边的不是
    • (?:[^\r\n0-9]*[0-9]){4}匹配一个数字 4 次
  • )关闭前瞻
  • (?!负向前看,断言右边的不是
    • (?:非捕获组
      • \S* 匹配 0+ 次非空白字符,然后匹配一个空格
    • ){2}关闭非捕获组并重复2次
  • )负向前瞻,断言不是 2 个空格
  • [a-zA-Z0-9 &]{8,}匹配任何列出的内容 8 次以上
  • $字符串结尾

Regex demo

关于java - 正则表达式量词语句失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58186984/

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