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的解答