【问题标题】:Regular Expression C# Random Letter from specific List of Letters来自特定字母列表的正则表达式 C# 随机字母
【发布时间】:2020-04-09 22:43:05
【问题描述】:

我希望字符串(长度 8)格式是特定字母列表 A、B、C 中的一个字母(这些字母都不应该重复)字母的位置是随机的,其余的是数字(0-9 )。 例如:

1234A567  - Valid
277897C0  - Valid
A100299B  - Not valid
12C3879C  - Not valid

我尝试过这样的事情: (\d){7}(A|C|E|F|G|H|J|K|M|U|Z){1} 但这不起作用。 帮忙?

【问题讨论】:

    标签: c# random expression letter


    【解决方案1】:

    你当前的正则表达式只会匹配一个有 7 位数字和一个字母结尾的字符串 - 但是你希望这个字母在字符串中的任何随机位置 - 所以你必须做一些不同的事情。

    这是一个正则表达式,它将验证您需要的所有内容,除了字符串的总长度(但可以使用 str.Length == 8 简单地测试):

    ^\d{0,7}[A|C|E|F|G|H|J|K|M|U|Z]{1}\d{0,7}$
    

    这是一个简单的演示:

    var re = new Regex(@"^\d{0,7}[A|C|E|F|G|H|J|K|M|U|Z]{1}\d{0,7}$");
    var strings = new string[] {
        "1234A567", // - Valid
        "277897C0", // - Valid
        "A100299B", // - Not valid
        "12C3879C" // - Not valid
    };
    
    foreach(var str in strings)
    {
        Console.WriteLine(str + (str.Length == 8 && re.IsMatch(str) ? " - valid" : " - not valid"));    
    }
    

    结果:

    1234A567 - valid
    277897C0 - valid
    A100299B - not valid
    12C3879C - not valid
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 2011-12-29
      相关资源
      最近更新 更多