C#で正規表現が使えたらな〜って時は以外と多いので、ちょっと正規表現を頑張って使ってみた。

投稿日:2017-02-03

あー、正規表現が使えたらな〜って時は以外と多いので、ちょっと正規表現を頑張って使ってみた。

別にC#に限らないんだけど、ソースの中に正規表現を書く時の書き方?っていうのかな。が分からなかったので、調べてみた。

[C#] 正規表現で半角英数以外を弾く
http://www.remember-the-time.xyz/2012/04/c_20.html

参考にしたのは上記サイト。

っていうか、ちょうど、自分がやりたかった事だったので、ビンゴだった。


using System.Text.RegularExpressions;
flg = 1; //1:半角英数 2:電話番号 3:郵便番号...
strCheckText = "あいうえおabcde";
if (flg == 1 && !(Regex.Match(strCheckText, "^[a-zA-Z0-9]+$")).Success)
{
// 半角英数以外の文字が含まれています。
}else if (flg == 2 && !(Regex.Match(strCheckText, "^[0-9]{2,5}-[0-9]{1,4}-[0-9]{4}$")).Success)
{
// 0-9以外が入力されています。
}

数値 : ^[0-9]+$
郵便番号 : ^[0-9]{3}[-][0-9]{4}$
電話番号 : ^[0-9]{2,5}-[0-9]{1,4}-[0-9]{4}$
全角かな : ^[ぁ-ん!ー]+$
全角カナ : ^[ァ-ヴ!ー]+$
半角カナ : ^[ア-゙]+$

ほぼ、引用になるけど、こんな感じで分ける事が出来て非常に助かった。

ちょうど同じようなシチュエーションで入力値のチェックをしなきゃって状態で、電話番号だったり、物理名(アルファベット・数字)だったり、論理名(日本語含む)だったりがコンボボックスで変化するっていう画面での入力値チェックっていう。

なので、仮に


if(textbox.text == 0 || textbox.text == 1 ..... || textbox.text == 9)
{

}

こんな感じで、0〜9までの入力チェックとか、加えて電話番号みたいに「+」「-」だけは入力可にするとか使い道は色々あると思う。

ただ、今の会社での開発状況的に、そういったチェック関数的なものは用意されておらず、各フォーム単位でやらざるを得ないので、結局、テキストボックス単位でのバリデーションになるし、画面担当者毎に開発流儀が違って、上みたいにゴリゴリ書く(自分も割とそのタイプ)人だったり、フォーム内で使えるようにクラスを作る人もいるし、でバラバラな状況w

で、結局、フォームの修正として自分に割り当てられてから、ソースを確認して、どっちなのかが分かるっていうw

その時に、どの入力されるテキストボックス毎に、電話番号だったり名称だったり、物理名(アルファベット・数字)だったりで、チェック条件が一致せず、分けざるを得ないこともしばしばあって、そういう時に正規表現だと、バカみたいにソースを追加しなくていいだろうなって、ずっと考えていたので、今後は正規表現を使ってコード量を減らしていきたい。

っていうか、外注した画面のソースを見て見ると、


if(textbox.text == 0 || textbox.text == 1 ..... || textbox.text == 9)
{

}

マジで、こんな感じで条件を追加していって、アルファベットも対応してたりする。

余計な書き方を追加してエラーを増やさない為といえば聞こえはいいけど、条件の追加漏れが発生したり、簡易な変更であっちもこっちも修正しなきゃいけなくなって、非常に効率が悪いって思ったのがきっかけで正規表現を使えたら、コード量減るし、条件の追加・修正漏れが発生しないのになって思ったのがきっかけで正規表現を使ってみようと考えて満足いく結果になったので、良しとする。

ただ、今所属してるプロジェクト的に、同様の修正が発生する画面はたくさんあるので、今後そういう画面に当たらないとも限らないっていう話。







-C#, PC, 開発メモ
-, ,


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

[C#]リストをカンマ区切りの文字列で出力する

リストの項目をカンマ区切りで出力したい 卵が先か鶏が先か~って話じゃないんですが、リストで出力した内容をカンマ区切りのデータにする必要が出てきたので、調べました。 List<string> …

「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません。」と表示された場合の対処法:Windows7

今日は2017年秋期の情報処理試験でしたが、受験されたみなさまいかがでしたでしょうか? ろくすっぽどころか、参考書すら買ってない状態だけど、情報処理試験の午前だけは受けに行く(起きれたら)。 午前は択 …

no image

CoreTweetを使って、複数アカウントのコンソールアプリを作ってみた。

CoreTweet使ってみたら、確かに簡単にTwitterへツイートできた。 の続き。   を参考に、自分のフォロワー情報を取得する。 多分というか、勝手な想像だけど、普通に複数のアカウント …

新型MacbookPro 2016(Late 2016)を買うかどうか非常に迷っている話。

どうしても、定期的に上がってしまうこの話題というか、欲しいから検討するんだけど、あと一歩が踏み出せない・・・ 日本の中心付近で仕様変更と闘うSE日記MacBookAir 11 Early2014 では …

C#で”LC.exe” はコード -1 を伴って終了しました(”LC.exe” exited with code -1)ってエラー

未だに確定した原因は自分で掴めてないんだけど、とりあえずエラーで検索して対策してみた。 どうにも、ビルド時にEXEフォルダ?とかにSRCフォルダからのコピーが上手くいかずにロックされてしまったりすると …


カテゴリー