我写了一个正则表达式,它应该使用以下规则验证字符串:
因此,如果字符串有效,字符串应如下所示:
CCCCNNNNNN或CCCCNNNNNNN
C是任何字符,N是数字。
我的表达是:@"^[0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}$";
我的正则表达式匹配代码如下所示:
var cc1 = "FOOBAR"; // should fail.
var cc2 = "AAAA1111111111"; // should succeed
var regex = @"^[0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}$";
Match match = Regex.Match( cc1, regex, RegexOptions.IgnoreCase );
if ( cc1 != string.Empty && match.Success )
{
//"The Number must start with 4 letters and contain no numbers.",
Error = SeverityType.Error
}
我希望有人可以看看我的表达,并提供一些有关改进的反馈,以产生有效的匹配。
另外,我正确使用.Match()
吗?如果Match.Success
是true
,那么这是否意味着字符串有效?
答案 0 :(得分:41)
4个字母数字字符的正则表达式后跟6到7个十进制数字:
var regex = @"^\w{4}\d{6,7}$";
请参阅:Regular Expression Language - Quick Reference
Regex.Match Method返回Match个对象。 Success Property表示匹配是否成功。
var match = Regex.Match(input, regex, RegexOptions.IgnoreCase);
if (!match.Success)
{
// does not match
}
答案 1 :(得分:5)
以下代码演示了正则表达式的用法:
var cc1 = "FOOBAR"; // should fail.
var cc2 = "AAAA1111111"; // should succeed
var r = new Regex(@"^[0-9a-zA-Z]{4}\d{6,7}$");
if (!r.IsMatch(cc2))
{
Console.WriteLine("cc2 doesn't match");
}
if (!r.IsMatch(cc1))
{
Console.WriteLine("cc1 doesn't match");
}
输出为cc1 doesn't match
。
答案 2 :(得分:4)
以下代码使用正则表达式并检查4种不同的模式来测试它,请参阅下面的输出:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
var p1 = "aaaa999999";
CheckMatch(p1);
p1 = "aaaa9999999";
CheckMatch(p1);
p1 = "aaaa99999999";
CheckMatch(p1);
p1 = "aaa999999";
CheckMatch(p1);
}
public static void CheckMatch(string p1)
{
var reg = new Regex(@"^\w{4}\d{6,7}$");
if (!reg.IsMatch(p1))
{
Console.WriteLine($"{p1} doesn't match");
}
else
{
Console.WriteLine($"{p1} matches");
}
}
}
<强>输出:强>
aaaa999999匹配
aaaa9999999匹配
aaaa99999999不匹配
aaa999999没有匹配
尝试 DotNetFiddle
答案 3 :(得分:3)
您的条件是:
[A-Za-z\d]{4}
\d{6,7}
把它放在一起并锚定它:
^[A-Za-z\d]{4}\d{6,7}\z
这取决于你如何定义“字母数字”。此外,如果您使用忽略大小写标记,则可以从表达式中删除A-Z
范围。
答案 4 :(得分:1)
尝试以下模式:
@"^[A-za-z\d]{4}\d{6,7}$"