正则表达式C#(xxxx-xxxx掩码)

Leo*_*nid 0 c# regex

我无法理解如何制作正则表达式例如我有掩码:xxxx-xxxx-xxxx其中"x"可以是az或AZ或0-9

并有代码:

            string[] numbers = 
                 {
                     "1a3F-5t5C-FIG0-InFo", 
                     "444-234-2245", 
                     "444.-2344-2245", 
                 };
        string sPattern = "^[a-z0-9A-z]{4}-[a-z0-9A-z]{4}-[a-z0-9A-z]{4}$-[a-z0-9A-z]{4}$";
        var validList = new List<string>();

        foreach (string s in numbers)
        {
            if (Regex.IsMatch(s, sPattern))
            {
                validList.Add(s);
            }
        }
        Assert.IsTrue(validList.Count==1);
Run Code Online (Sandbox Code Playgroud)

但它不起作用......我在表达方面有一些错误.你能解释一下为什么是错的吗?

Jon*_*eet 6

我想到两件事:"a-z0-9A-z"应该是"a-z0-9A-Z"(注意大写字母Z),你在表达式中间有一个$,不应该在那里.看起来你的面具目前正试图匹配组xxxx而不是三组.

尝试修复这三件事,然后在遇到问题时更新问题.

我个人会Regex为模式创建一个实例,顺便说一下:

Regex regex = new Regex(
    "^[a-z0-9A-Z]{4}-[a-z0-9A-Z]{4}-[a-z0-9A-Z]{4}$");
Run Code Online (Sandbox Code Playgroud)