我一直在尝试解决这个问题,不得不转向问你好人。
我已经多次发现以下正则表达式模式,从我所读到的内容来看,它应该可以工作,但实际上似乎不起作用
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));
}