我正在寻找一个可以验证我的字符串的正则表达式。字符串
如何做到这一点?
答案 0 :(得分:4)
答案 1 :(得分:3)
这可以通过lookahead assertion:
来实现^(?=(?:\D*\d){0,3}\D*$).{6,25}$
<强>解释强>
^ # Start of string
(?= # Assert that the following can be matched here:
(?:\D*\d) # Any number of non-digits, followed by one digit
{0,3} # (zero to three times)
\D* # followed by only non-digits
$ # until the end of the string
) # (End of lookahead)
.{6,25} # Match 6 to 25 characters (any characters except newlines)
$ # End of string
答案 2 :(得分:1)
听起来你只需要排除超过三位数的字符串和那些不符合长度要求的字符串。
两者都不需要正则表达式,事实上,构建匹配的正则表达式是棘手的,因为数字可能会四处传播。
使用"a string".Length
检查字符数。
迭代字符并使用char.IsDigit
检查数字计数。
public bool IsValid(string myString)
{
if (myString.Length < 6 || myString.Length > 25)
return false;
int digitCount = 0;
foreach(var ch in myString)
{
if(char.IsDigit(ch))
digitCount;
}
return digitCount < 4;
}