簡體   English   中英

C# 正則表達式:{4} 和超過 4 個可能的值

[英]C# Regular Expression: {4} and more then 4 values possible

我需要一個正則表達式來檢查輸入是否正好是 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,其他工作)

在此先感謝,〜巨魔爵士

如果它必須恰好是4,那么您需要使用 $ 和 ^ 來標記輸入的結束和開始:

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

注意我在這里也使用逐字字符串文字,所以保存理智 - 然后你不需要 C#-escape 所有你的 regex-escape-characters。 只有"需要 C# 中的 escaping (對"" )。

“55555”包含“5555”,這是有效的......所以字符串包含匹配項,即使匹配項不是完整的字符串。 有關解決方案,請參閱 Marc 的答案

一個 5 位數字的字符串也包含4 位數字,因此您必須確保還添加了字符串約束的開始和結束。

這應該作為您的正則表達式:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM