C#正则表达式:{4}并且可能有4个以上的值

本文关键字:4个 可能有 正则表达式 | 更新日期: 2023-09-27 17:57:54

我需要一个正则表达式来检查输入是否正好是4个数字。我正在使用"''d{4}"(也尝试过"''d''d''d''d")。但是,如果您输入5个数字,它也表示输入是有效的。

  [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是"真"的,但应该是假的,其他的都有效)

提前感谢,~ Troll爵士

C#正则表达式:{4}并且可能有4个以上的值

如果它必须是恰好4,那么您需要使用$和^来标记输入的结束和开始:

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

注意,我在这里也使用了逐字逐句的字符串文字,所以为了保持理智,您不需要对所有正则表达式转义字符进行C#转义。只有"需要在C#中转义(到"")。

"55555"包含"5555",这是有效的。。。因此,字符串包含一个匹配项,即使该匹配项不是完整的字符串。有关解决方案

,请参阅Marc的回答

一个有5位数字的字符串也包含4位数字,因此您必须确保还添加了字符串约束的开始和结束。

这应该作为您的Regex:工作

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