【问题标题】: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