次のルールを使用して文字列を検証する正規表現を作成しました。
したがって、有効な場合、文字列は次のようになります。
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
の場合、それは文字列が有効であることを意味しますか?
4桁の英数字の正規表現は、6〜7桁の10進数です。
var regex = @"^\w{4}\d{6,7}$";
Regex.Match Method は Match オブジェクトを返します。 Success Property は、一致が成功したかどうかを示します。
var match = Regex.Match(input, regex, RegexOptions.IgnoreCase);
if (!match.Success)
{
// does not match
}
次のコードは、正規表現の使用方法を示しています。
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
。
次のコードは正規表現を使用しており、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としてお試しください
条件は次のとおりです。
[A-Za-z\d]{4}
\d{6,7}
まとめて固定します。
^[A-Za-z\d]{4}\d{6,7}\z
これは、「英数字」の定義方法に少し依存します。また、大文字と小文字を区別しないフラグを使用している場合は、A-Z
式の範囲。
次のパターンを試してください。
@"^[A-za-z\d]{4}\d{6,7}$"