gpt4 book ai didi

java - 正则表达式接受最大的字母和字母数字以及额外的%(无限制)

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

我在正则表达式帖子中进行了大量搜索,但没有找到我正在寻找的解决方案。

我有正则表达式   ([a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?) ?接受这些案例:

  • 空字符串
  • (6 个字母)+(2 个字母数字)
  • (6 个字母) + (2 个字母数字) + (3 个字母)

现在,我正在寻找的是修改我的正则表达式,以在任意位置接受额外的可选字符 % ,但仅保留数量 MAX当前正则表达式中的字母和字母数字。

示例:

  • 空刺 -> 正确
  • AABB -> 错误(没有 % 时需要 6 个字母 + 2 个字母数字)
  • AABB% -> 正确
  • AA33% -> 错误(数字前需要 6 个字母)
  • AA%33 -> 正确(% 用作通配符并避免最大数字)
  • A%3 -> 正确
  • AA%33% -> 正确
  • %AA33% -> 正确
  • %AA3% -> 正确
  • AAAAAA33 -> 正确
  • AABBCCXX -> 正确
  • AABBCC44XXX -> 正确
  • AABBCC44XXXE -> 错误(不考虑 alpha 长度)
  • %AABBCC44XXXE -> 错误(不考虑 alpha 长度)
  • %AAB%BCC4%4X%XX% -> 正确(因为 % 在长度上应该被忽略,这里考虑字母和字母数字的长度)

可以吗?

最佳答案

下面的正则表达式应该足够接近。

^(?:(?=.*%)(?![A-Z]{1,5}[0-9])(?:%?[A-Z]){0,6}(?:(?:%?[A-Z0-9]){1,2})?(?:(?:%?[A-Z]){1,3})?%?)$|^(?:[A-Z]{6}(?:[A-Z0-9]{2})(?:[A-Z]{3})?)$|^$

注意管道 (| = OR) 如何分隔 3 个正则表达式。
一个是带有 % 的,然后是没有 % 的,最后是空白。

此外,字符类仅使用大写 A-Z
因此,为了也允许使用小写字母,要么让正则表达式忽略大小写,要么用 A-Za-z 替换它们。

你可以测试一下here

更短的替代方案:

^(?=.*%)(?![A-Z]{1,5}[0-9])(?!(?:.*?[0-9]){3})(?:%?[A-Z0-9]){1,11}%?$|^(?:[A-Z]{6}[A-Z0-9]{2}(?:[A-Z]{3})?)$|^$

关于java - 正则表达式接受最大的字母和字母数字以及额外的%(无限制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43251756/

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