2016-07-23 5 views

答えて

0

NULLの意味に注意してください。ほとんどのプログラミング言語では、ポインタもリファレンスも、未割り当ての、または「ゼロ」さえも意味しません。空の文字列は通常NULLではありません。コードテーブル0のASCIIテーブルにはNULLの文字がありますので、\x00を実行するという考えはNULL文字を検出します。

あなたが正規表現にマッチnullまたは空またはされる文字列を許可したい場合は、私はそうのような操作を壊すことをお勧めしたい...

if (String.IsNullOrEmpty(str) || Regex.IsMatch(str, pattern)) { 
    // null or match. do stuff... 
} 

は、ポイントを説明するために、これを試してみてください...

string s1 = null; 
string s2 = ""; 
string s3 = "\x0"; 

if (s1 == s2) Console.WriteLine("s1 == s2"); 
if (s1 == s3) Console.WriteLine("s1 == s3"); 
if (s2 == s3) Console.WriteLine("s2 == s3"); 
0

(...)?を空の文字列と一致させる。あなたはRegex.Ismatch()Regex.Matches()

var r=new Regex(@"(^[a-zA-Z0-9]\d{2}a-zA-Z0-9{2}[A-Za-z0-9]$|[^\x00-\x80]|\b\w{1,1}\b)?"); 

var isMatchWhenEmpty = r.IsMatch(string.Empty);にテキスト入力としてnullを渡すことはできません//返し

var result = r.IsMatch(null); //スローとNullReferenceException

だから、余分な検証を追加:

var isMatch = string.IsNullOrEmpty(input) || r.IsMatch(input); 
関連する問題