正则表达式需要将字母数字字符串与一个数字的最小值匹配,向前看只检查第二个位置



我一直在尝试解决这个问题,不得不转向问你好人。

我已经多次发现以下正则表达式模式,从我所读到的内容来看,它应该可以工作,但实际上似乎不起作用

b(?=.d)(?i)[a-zd]{3,}b

它的问题是,如果字符串的第二个位置有一个字母,即使字符串中有数字,它也会失败。

所以 60B15H 像它应该的那样通过,但 6D15H 失败了,这不是我想要的

我对正则表达式的要求是字符串必须是字母数字,并且在任何位置至少包含一个数字,它可以是所有数字。它只是不能包含所有字母或任何特殊字符。它的长度至少需要 3 个字符。

您可以使用

(?i)b(?=[a-z]*d)[a-zd]{3,}b
      ^^^^^^^^^^^^

您需要告诉正则表达式引擎检查任何字母后面的数字。(?=[a-z]*d)前瞻在每个前导字边界b后执行一次,并确保字母序列后至少有一个数字。

查看正则表达式演示

当您可以使用简单的代码获得相同的内容时,为什么要使用正则表达式:

public static bool isValid(string input)
{
    if(input.Length < 3 || input.All(c => char.IsLetter(c))) 
    {
        return false;
    }
    return input.All(c => char.IsLetterOrDigit(c));
}

相关内容

最新更新