正则表达式 C# 特定字母列表中的随机字母

Regular Expression C# Random Letter from specific List of Letters

我希望字符串(长度为 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} 但这不起作用。 帮忙?

您当前的正则表达式将只匹配一个有 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