gpt4 book ai didi

java - 可选字符的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:52 24 4
gpt4 key购买 nike

我正在使用以下正则表达式:

^([W|w][P|p]|[0-9]){8}$

上面的正则表达式也接受 wp1234567(wp+7 位)。而预期:WP+6digit 或 wp+6digit 或仅 8 位

例如:

WP123456
wp126456
64535353

最佳答案

请注意,[W|w] 匹配Ww|,因为|字符类中的 失去了交替运算符的特殊含义。此外,通过围绕 [W|w][P|p]|[0-9] 设置分组 (...),您可以匹配出现 8 次的 *the whole WP 数字序列。

您应该在有限量词中设置正确的值并删除分组并使用交替以允许 wp+6 位或仅 8 位:

^(?:[Ww][Pp][0-9]{6}|[0-9]{8})$

参见 demo

正则表达式匹配:

  • ^ - 字符串的开头(如果您使用 String#matches() 检查整个字符串则不需要)
  • (?:[Ww][Pp][0-9]{6}|[0-9]{8}) - 2 个备选方案:
    • [Ww][Pp][0-9]{6} - Ww 后跟 Pp 后跟 6 位数字
    • | - 或者...
    • [0-9]{8} - 恰好 8 位数字
  • $ - 字符串结尾

其他场景(以防万一):

如果需要匹配7位或8位数字组成的字符串,需要将{8}有限量词替换为{7,8}:

^(?:[Ww][Pp][0-9]{6}|[0-9]{7,8})$

如果您不想匹配 Wp123456wP123456,请在开头再使用一个替代项:

^(?:(?:WP|wp)[0-9]{6}|[0-9]{8})$

关于java - 可选字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35434863/

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