C# 在序列中至少查找4个非数字
我有一个序列,例如123a*a712,它是有效的。 我想确保只有3个字符不是数字,因为4+将使其无效 几个例子: 56+33-有效的空白也是一个字符 56+33+6-超过3个非数字字符无效 错误-无效 1234-有效C# 在序列中至少查找4个非数字,c#,regex,C#,Regex,我有一个序列,例如123a*a712,它是有效的。 我想确保只有3个字符不是数字,因为4+将使其无效 几个例子: 56+33-有效的空白也是一个字符 56+33+6-超过3个非数字字符无效 错误-无效 1234-有效 谢谢大家! 不需要使用正则表达式 bool IsValid = "123a*a712".Count(x => !char.IsDigit(x)) < 4; 使用助手: public static class String { public static boo
谢谢大家! 不需要使用正则表达式
bool IsValid = "123a*a712".Count(x => !char.IsDigit(x)) < 4;
使用助手:
public static class String
{
public static bool containsAtLeastXNonDigit(string s, int nbOfDigit)
{
return s.Count(!char.IsDigit) >= nbOfDigit;
}
}
并使用它:String.containsAtleastTXNondightTest,4 如果您确实需要正则表达式解决方案,您可以选择
^(\d*[^\d]?){0,3}\d*$
它最多可以匹配三个非数字
我想确保只有3个字符不是
数字,因为4+将使其无效
编辑
刚刚意识到,同样可以通过str.Count实现!char.isDigit 让我们看看你迄今为止做了什么/尝试了什么。这不是“让其他人做你的工作”服务使用此正则表达式[0-9]*\D\D\D[0-9]+*来compate@CSharpie我有过不同的小尝试,当我决定转到这里时,它已经经过了不同的更改,因此为没有发布这些尝试表示歉意。效果同样好,但我个人更喜欢@fubo发布的LINQ方法,谢谢你的回答!
public static int countNonDigit(string str) {
return (str.Length - str.Count(char.isDigit))
}
if (countNonDigit(str) >= 4) {
// not valid
}