我需要检查字符串是否由3个大写字母和4个数字组成。
例如:ABC1234
如何使用正则表达式检查它?
答案 0 :(得分:4)
如果您正在寻找任何订单,以下是两种有趣的方法:
^(?=(.*\d){4})(?=(.*[A-Z]){3}).{7}$
"正好七个字符,包含4位数字和3个大写字母"。
^(?<d>){4}(?<c>){3}((?<-d>\d)|(?<-c>[A-Z])){7}$
&#34;期待4位数和3个大写字母;然后确保我们总共有7个数字或大写字母,在我们去的时候计算每个数字#34;。
答案 1 :(得分:2)
我想这样的事情会起作用:https://regex101.com/r/81ZTVQ/1
^[A-Z]{3}[0-9]{4}$
<强>解释强>
[A-Z]
- 区分大小写的连续字符(大写字母A到大写字母Z)匹配谓词{n}
- 前一个匹配谓词的确切数字匹配[0-9]
数值范围(在本例中为0到9)匹配谓词测试用例:
ABC1234 - Full match
A1BC234 - No match
GFQ9230 - Full match
ACB0000 - Full match
修改强>
我希望将我的添加内容与罗林的回答有些相似,但略有不同。
https://regex101.com/r/81ZTVQ/7
^(?=(.*[A-Z]){3})(?=(.*\d){4})([A-Z\d]{7})$
<强>解释强>
(?=(.*[A-Z]){3})
- 将A-Z与任何前面的字符匹配的正向前瞻,3次。(?=(.*\d){4})
- 与任何前面的字符匹配0-9的正向前瞻,3次。([A-Z\d]{7})
- 提供的参数必须与此谓词匹配--A-Z和0-9的任意组合中的7。我只是喜欢把它放在一个组中,因此分组。逻辑上向后工作,只要长度为7,我们就可以有AZ和0-9的任意组合。然后我们的正向前瞻断言要求的长度(在这种情况下,4位数,3个大写字母)。 / p>
用于编辑的测试用例
ABC1234
A1BC234
GFQ9230
ACB0000
AGF1923
A237323
3E44E4E
12344AB
AAAE123
AK348A3
答案 2 :(得分:1)
另一个正则表达式:^[A-Z]{3}\d{4}$
\d
代表数字^
在第一个char之前锚定$
在最后一个字符后锚定答案 3 :(得分:0)
您可以检查字符串是否由3个大写字母和4个数字组成(假设大写字母和数字可以出现在字符串中的任何位置),如下所示:
Regex rgx = new Regex(@"(^[A-Z]{3}\d{4}$)|(^[A-Z]{2}\d[A-Z]\d{3}$)|(^[A-Z]{2}\d{2}[A-Z]\d{2}$)|(^[A-Z]{2}\d{3}[A-Z]\d$)|(^[A-Z]{2}\d{4}[A-Z]$)|(^[A-Z]\d[A-Z]{2}\d{3}$)|(^[A-Z]\d[A-Z]\d[A-Z]\d{2}$)|(^[A-Z]\d[A-Z]\d{2}[A-Z]\d$)|(^[A-Z]\d[A-Z]\d{3}[A-Z]$)|(^[A-Z]\d{2}[A-Z]{2}\d{2}$)|(^[A-Z]\d{2}[A-Z]\d[A-Z]\d$)|(^[A-Z]\d{2}[A-Z]\d{2}[A-Z]$)|(^[A-Z]\d{3}[A-Z]{2}\d$)|(^[A-Z]\d{3}[A-Z]\d[A-Z]$)|(^[A-Z]\d{4}[A-Z]{2}$)|(^\d[A-Z]{3}\d{3}$)|(^\d[A-Z]{2}\d[A-Z]\d{2}$)|(^\d[A-Z]{2}\d{2}[A-Z]\d$)|(^\d[A-Z]{2}\d{3}[A-Z]$)|(^\d[A-Z]\d[A-Z]{2}\d{2}$)|(^\d[A-Z]\d[A-Z]\d[A-Z]\d$)|(^\d[A-Z]\d[A-Z]\d{2}[A-Z]$)|(^\d[A-Z]\d{2}[A-Z]{2}\d$)|(^\d[A-Z]\d{2}[A-Z]\d[A-Z]$)|(^\d[A-Z]\d{3}[A-Z]{2}$)|(^\d{2}[A-Z]{3}\d{2}$)|(^\d{2}[A-Z]{2}\d[A-Z]\d$)|(^\d{2}[A-Z]{2}\d{2}[A-Z]$)|(^\d{2}[A-Z]\d[A-Z]{2}\d$)|(^\d{2}[A-Z]\d[A-Z]\d[A-Z]$)|(^\d{2}[A-Z]\d{2}[A-Z]{2}$)|(^\d{3}[A-Z]{3}\d$)|(^\d{3}[A-Z]{2}\d[A-Z]$)|(^\d{3}[A-Z]\d[A-Z]{2}$)|(^\d{4}[A-Z]{3}$)");
var samples = new string[]{ "ABC1234", "1A2B3C4", "ABCD123", "aBC1234", "ABC12345" };
foreach(var sample in samples)
{
Console.WriteLine(sample + " is " + (rgx.IsMatch(sample) ? "a match" : "not a match"));
}
输出:
ABC1234是一个比赛
1A2B3C4是匹配
ABCD123不匹配
aBC1234不是匹配
ABC12345不匹配