正規表現を使って文字列がある形式と一致するか調べる
補足:ここでは正規表現の説明はしません。.NET Frameworkの正規表現の基本は、「正規表現の基本」で説明しています。
補足:「正規表現テストツール」を使って正規表現のテストを行うことができますので、お役立てください。
指定された正規表現のパターンと一致する対象が入力文字列内で見つかるかどうかを調べるには、RegexクラスのIsMatchメソッドを使用します。ここではIsMatchメソッドを使った例を幾つか紹介します。なお、正規表現のパターンと一致する個所を探し、見つかったらその箇所を抽出する方法は、「正規表現を使って文字列を検索し、抽出する」で紹介しています。 郵便番号か調べる次の例では、TextBox1に入力された文字列が郵便番号っぽいか(「"数字3文字"-"数字4文字"」形式になっているか)調べています。RegexOptions.ECMAScriptを指定しているのは、\d が半角の数字だけにマッチするようにするためです。 '郵便番号っぽいか調べる 'パターンは"\d{3}-\d{4}"とも書ける If System.Text.RegularExpressions.Regex.IsMatch( _ TextBox1.Text, _ "^\d\d\d-\d\d\d\d$", _ System.Text.RegularExpressions.RegexOptions.ECMAScript) Then Console.WriteLine("郵便番号です") End If //郵便番号っぽいか調べる //パターンは"\d{3}-\d{4}"とも書ける if (System.Text.RegularExpressions.Regex.IsMatch( TextBox1.Text, @"^\d\d\d-\d\d\d\d$", System.Text.RegularExpressions.RegexOptions.ECMAScript)) { Console.WriteLine("郵便番号です"); } 半角カナ文字が含まれているか調べる次の例ではTextBox1に入力された文字列内に半角カナ文字(Halfwidth CJK punctuationとHalfwidth Katakana variants)があるか調べています。上記の例では静的メソッドのIsMatchを使用しましたが、ここではインスタンスメソッドを使用しています。 '正規表現パターンを指定してRegexオブジェクトを作成 Dim r As New System.Text.RegularExpressions.Regex("[\uFF61-\uFF9F]") '半角カナ文字が含まれているか調べる If r.IsMatch(TextBox1.Text) Then Console.WriteLine("半角カナ文字が含まれています") End If //正規表現パターンを指定してRegexオブジェクトを作成 System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex( @"[\uFF61-\uFF9F]"); //半角カナ文字が含まれているか調べる if (r.IsMatch(TextBox1.Text)) { Console.WriteLine("半角カナ文字が含まれています"); } メールアドレスか調べる次の例ではTextBox1に入力された文字列がメールアドレスっぽいか調べています。ここで使用している正規表現パターンは、「Regular-Expressions.info」で紹介されているものです。また、MSDNの「方法 : 文字列が有効な電子メール形式であるかどうかを検証する」では別のパターンが紹介されています。 'メールアドレスっぽいか調べる If System.Text.RegularExpressions.Regex.IsMatch( _ TextBox1.Text, _ "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$", _ System.Text.RegularExpressions.RegexOptions.IgnoreCase) Then Console.WriteLine("メールアドレスのようです") End If //メールアドレスっぽいか調べる if (System.Text.RegularExpressions.Regex.IsMatch( TextBox1.Text, @"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$", System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { Console.WriteLine("メールアドレスのようです"); } URLか調べる次の例ではTextBox1に入力された文字列がURL(HTTP)っぽいか調べています。なおこの正規表現パターンは、「Perlメモ」で紹介されているものです。 'URLっぽいか調べる If System.Text.RegularExpressions.Regex.IsMatch( _ TextBox1.Text, _ "^s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+$") Then Console.WriteLine("URLのようです") End If //URLっぽいか調べる if (System.Text.RegularExpressions.Regex.IsMatch( TextBox1.Text, @"^s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+$")) { Console.WriteLine("URLのようです"); } 電話番号か調べる次の例ではTextBox1に入力された文字列が(日本国内の)電話番号っぽいかをおおざっぱに調べています。「電話番号に関するQ&A」を参考にしました。 '電話番号っぽいか調べる If System.Text.RegularExpressions.Regex.IsMatch( _ TextBox1.Text, _ "^0\d{1,4}-\d{1,4}-\d{4}$") Then Console.WriteLine("電話番号のようです") End If //電話番号っぽいか調べる if (System.Text.RegularExpressions.Regex.IsMatch( TextBox1.Text, @"^0\d{1,4}-\d{1,4}-\d{4}$")) { Console.WriteLine("電話番号のようです"); } |
|
Copyright(C) DOBON!. All rights reserved.
|