C#正则表达式:{4}和更多4个值可能

问题描述:

我需要一个正则表达式来检查输入是否正好是4个数字。 我正在使用“\ d {4}”(也试过“\ d \ d \ d \ d”)。 但是,如果您输入5个数字,它也表示输入有效。C#正则表达式:{4}和更多4个值可能

[TestMethod] 
    public void RegexTest() 
    { 
     Regex expr = new Regex("\\d{4}"); 
     String a = "4444", b = "4l44", c = "55555", d = "5 55"; 
     Match mc = expr.Match(a); 
     Assert.IsTrue(mc.Success); 

     mc = expr.Match(b); 
     Assert.IsFalse(mc.Success); 
     ***mc = expr.Match(c); 
     Assert.IsFalse(mc.Success)***; 
     mc = expr.Match(d); 
     Assert.IsFalse(mc.Success); 
    } 

(这就是 '真' 但C应该是假的,其他的工作)

由于提前, 〜巨魔爵士

如果一定要正好 4,那么你需要使用$ ^和标记结束和输入的开始:

Regex expr = new Regex(@"^\d{4}$"); 

注意我还使用逐字字符串在这里,所以节省理智 - 那么你不需要C#-escape所有你的正则表达式转义字符。只有"需要在C#中转义(至"")。

一个5位数的字符串包含 4位数,所以你必须确保你还要添加字符串约束的开始和结束。

这应该作为您的正则表达式:

Regex expr = new Regex(@"^\d{4}$"); 

“55555”包含“5555”,这是有效的。所以字符串中包含的比赛,即使比赛不是完整的字符串。请参阅Marc的解答