gpt4 book ai didi

javascript - 正则表达式字符恰好出现两次

转载 作者:行者123 更新时间:2023-12-05 00:35:19 26 4
gpt4 key购买 nike

给定一个字符串数组,测试是否有任何字符恰好出现了两次。
样本:

const input = ['asdf', 'fdas', 'asds', 'd fm', 'dfaa', 'aaaa', 'aabb', 'aaabb'];
const output = ['asds', 'dfaa', 'aabb', 'aaabb'];
我试过这样
/(?:^|(.)(?!\1))([A-Za-z0-9])\2(?!\2)/
但我只有这些字符串: ['dfaa', 'aabb', 'aaabb'] .
请问有什么建议吗?

最佳答案

您可以使用

/(.)(?<=^(?:(?!\1).)*\1(?=(?:(?!\1).)*\1(?:(?!\1).)*$))/s
regex demo . 备注 因为我们只寻找第一场比赛,所以没有 g旗帜。细节:
  • (.) - 任何一个被捕获到第 1 组的字符:
  • (?<= - 正面向后看的开始,紧挨着左边,应该有
  • ^ - 字符串开头
  • (?:(?!\1).)* - 尽可能多的任何字符,除了捕获到组 1 中的字符
  • \1 - 相同的字符被捕获到第 1 组
  • (?=(?:(?!\1).)*\1(?:(?!\1).)*$) - 正向前瞻,需要除第 1 组中的字符之外的任何零个或多个字符,然后是第 1 组中捕获的相同字符,以及除第 1 组中的字符之外的任何零个或多个字符,直到字符串结束

  • ) - 回顾结束。

  • tempered greedy tokens 的环视确保捕获的字符在字符串中仅出现两次。
    请参阅 JavaScript 演示:

    const input = ['asdf', 'fdas', 'asds', 'd fm', 'dfaa', 'aaaa', 'aabb', 'aaabb'];
    const re = /(.)(?<=^(?:(?!\1).)*\1(?=(?:(?!\1).)*\1(?:(?!\1).)*$))/s;
    for (const s of input) {
    console.log(s, '=>', re.test(s))
    }

    关于javascript - 正则表达式字符恰好出现两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69732797/

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