gpt4 book ai didi

javascript - 正则表达式匹配两个条件但在字符串的不同部分

转载 作者:行者123 更新时间:2023-12-04 09:42:37 25 4
gpt4 key购买 nike

我有以下正则表达式:

  • ([JQKA])\1
  • ([2-9TJQKA])\1

  • 如果两个正则表达式匹配在一起,我想检查长度为 5 的字符串 - 但在单独的字符上。

    所以:

    如果我有一串 2233 - 它不应该匹配 因为它不满足 Regex 1 的条件并且满足 Regex 2 的条件

    如果我有一串 33QQ2 - 它应该匹配 因为 QQ匹配正则表达式 1 和 33匹配正则表达式 2

    如果我有一个字符串 AQQ44 - 它应该匹配 因为 QQ正则表达式 1 和 44匹配正则表达式 2

    如果我有一个字符串 AAKQQ - 它应该匹配 因为 AA正则表达式 1 和 QQ匹配正则表达式 2

    如果我有一个字符串 QQ234 - 它不应该匹配 .即使它匹配 Regex 1 和 Regex 2 条件相同的 QQ ,我想要第二个条件来验证字符串的其他部分而不是第一个,所以在它匹配 Regex 1 之后 - 它没有找到匹配 Regex 2 的部分。

    最佳答案

    您可以使用

    /^(?=.{5}$).*(?:([JQKA])\1.*([2-9TJQKA])\2|([2-9TJQKA])\3.*([JQKA])\4)/

    regex demo .您可以更换 .在前瞻模式中使用 [A-Z0-9]如果您只允许字符串中的大写字母或数字(即 (?=.{5}$) => (?=[A-Z0-9]{5}$) )。

    详情
  • ^ - 字符串开头
  • (?=.{5}$) - 总字符串长度必须是除换行符以外的 5 个字符
  • .* - 尽可能多的除换行符以外的任何 0 个或更多字符
  • (?:([JQKA])\1.*([2-9TJQKA])\2|([2-9TJQKA])\3.*([JQKA])\4) - 一个非捕获组匹配
  • ([JQKA])\1.*([2-9TJQKA])\2 - 模式 1 后跟除换行符以外的任意 0 个或更多字符,尽可能多,模式 2
  • | - 或
  • ([2-9TJQKA])\3.*([JQKA])\4 - 模式 2 后跟除换行符以外的任何 0 个或更多字符,尽可能多,模式 1
  • 关于javascript - 正则表达式匹配两个条件但在字符串的不同部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62260300/

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