正则表达式需要将字母数字字符串与一个数字的最小值匹配,向前看只检查第二个位置
本文关键字:数字 最小值 一个 第二个 检查 向前看 位置 数字字符 字符串 正则表达式 | 更新日期: 2023-09-27 18:30:53
我一直在尝试解决这个问题,不得不转向问你好人。
我已经多次发现以下正则表达式模式,从我所读到的内容来看,它应该可以工作,但实际上似乎不起作用
'b(?=.'d)(?i)[a-z'd]{3,}'b
它的问题是,如果字符串的第二个位置有一个字母,即使字符串中有数字,它也会失败。
所以 60B15H 像它应该的那样通过,但 6D15H 失败了,这不是我想要的
我对正则表达式的要求是字符串必须是字母数字,并且在任何位置至少包含一个数字,它可以是所有数字。它只是不能包含所有字母或任何特殊字符。它的长度至少需要 3 个字符。
您可以使用
(?i)'b(?=[a-z]*'d)[a-z'd]{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));
}