匹配 "MM"--> 匹配 ""--> 匹配 "1234"---6ren">
gpt4 book ai didi

regex - 如何使用正则表达式检查不同字符的数量?

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

我正在尝试创建正则表达式来查找包含最多三个不同字符的所有输入。输入多长时间无关紧要。

案例示例:

  • "32 32 32 32 34"--> 匹配
  • "MM"--> 匹配
  • ""--> 匹配
  • "1234"--> 不匹配

  • 我已经完成了正则表达式来查找四个或更多不同字符的输入,但现在我需要以相反的方式......
    (.).*(?\1)(.).*(?\1)(?\2)(.).*(?\1)(?\2)(?\3)(.)

    主要问题是:如何检查不同字符的数量?

    最佳答案

    以下将匹配最多三个不同的非空格字符的字符串

    ^\s*(\S)?(?:\s|\1)*(\S)?(?:\s|\1|\2)*(\S)?(?:\s|\1|\2|\3)*$
    (\S)匹配一个非空格字符并捕获它,以便稍后可以使用反向引用在正则表达式中引用它,例如 \1 . ?(\S)?用于使字符串可以包含零、一种、两种或三种类型的非空格字符。
    ?:使一组非捕获。

    正则表达式的第一部分最多捕获三个不同的非空格字符 \1 , \2 , \3 ,然后 (?:\s|\1|\2|\3)*确保只有那些字符或空格 \s然后可以出现在字符串结尾 $ 之前.

    在 Javascript 中,一种方法是“使用正则表达式”计算字符串中不同非空格字符的数量:
    var str = 'ABC ABC';
    var chars = '';

    str.replace( /\S/g, function ( m ) {
    if ( chars.indexOf(m) == -1 ) chars += m;
    });

    chars.length; // 3

    关于regex - 如何使用正则表达式检查不同字符的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16297191/

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