我有一个输入,可以是以下(这三个中的任何一个):
我想出了这个正则表达式,但它不能确定原因:
@"[A-Z0-9][1-8]-
我正在考虑在正则表达式检查之后检查角落情况,例如0和9,因为正则表达式检查没有验证这个
答案 0 :(得分:3)
不确定我理解,但是如何:
^(?:[A-Z]|[1-8]|0[1-9]|[1-8][0-9]|9[0-8])$
<强>解释强>
(?:...)
是一个没有捕获的群体
|
引入了替代方案
[A-Z]
表示一个字母
[1-8]
1到8之间的一位数字
0[1-9]
a 0后跟1到9之间的数字
[1-8][0-9]
1到8之间的数字,后跟1到9之间的数字
9[0-8]
9后跟0到8之间的数字
可能是这样,取决于您的实际需求:
^(?:[A-Z]|[0-9]?[1-8])$
答案 1 :(得分:1)
我认为你可以使用这种模式
@"^([1-8A-Z]|0[1-9]|[1-9]{2})$"
答案 2 :(得分:0)
^([1-8]|([0-9][0-9])|[A-Z])$
怎么样?
这将匹配
一个 8(但不是9) 09
答案 3 :(得分:0)
您可以使用以下模式:
^[1-8][A-Z](?:0[1-9]|[1-8][0-9]|9[0-8])$
^[1-8]
- 输入应以数字1-8 [A-Z]
- 然后应该是单个字母A-Z (0[1-9]|[1-8][0-9]|9[0-8])$
它应以两个数字结尾,分别为01-19或10-89或90-98 测试:
string pattern = @"^[1-8][A-Z](0[1-9]|[1-8][0-9]|9[0-8])$";
Regex regex = new Regex(pattern);
string[] valid = { "1A01", "8Z98" };
bool allMatch = valid.All(regex.IsMatch);
string[] invalid = { "0A01", "11A01", "1A1", "1A99", "1A00", "101", "1AA01" };
bool allNotMatch = !invalid.Any(regex.IsMatch);
答案 4 :(得分:0)
[1-8]{0,1}[A-Z]{0,1}\d{1,2}
匹配以下所有内容
8A8 8B9 9 0 00