質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

1590閲覧

jquery.validationEngine-ja.jsで使用している正規表現をC#で使用したいです。

reprepjqu

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2018/08/12 01:49

編集2018/08/12 14:12

お世話になります。

jquery.validationEngine-ja.jsで使用しているメール、電話番号と同じ正規表現をC#で使用したいです。

jquery.validationEngine-ja.jsの正規表現

"email": { "regex": /^((([a-z]|\d|[!#$%&'*+\-/=?^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(.([a-z]|\d|[!#$%&'*+\-/=?^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))).)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))).?$/i, "alertText": "メールアドレスが正しくありません" }, // 電話番号チェック "phone": { "regex": /^([+][0-9]{1,3}([ .\-])?)?([(][0-9]{1,6}[)])?([0-9 .\-]{1,32})(([A-Za-z \:]{1,11})?[0-9]{1,4}?)$/, "alertText": "ハイフンありの正しい番号を入力してください" },

以下のように、正規表現をそのままコピーしたものをC#で試しましたが、うまくいきませんでした。

Regex emaiRegex = new Regex(@"/^((([a-z]|\d|[!#$%&'*+\-/=?^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(.([a-z]|\d|[!#$%&'*+\-/=?^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))).)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))).?$/i"); Regex phoneRegex = new Regex(@"/^([+][0-9]{1,3}([ .\-])?)?([(][0-9]{1,6}[)])?([0-9 .\-]{1,32})(([A-Za-z \:]{1,11})?[0-9]{1,4}?)$/"); bool emailCheck = emaiRegex.IsMatch("testmail@yahoo.co.jp");  //trueになると思いましたが、falseになります。 bool phoneCheck = phoneRegex.IsMatch("03-1111-2222");      //trueになると思いましたが、falseになります。

C#で使用するにはどうしたら良いか教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/12 02:02 編集

何を作っているかと(ASP.NET Web Forms?, ASP.NET MVC? その他?)、開発環境(OS, .NET, IIS, Visual Studio のバージョン・エディションやブラウザは何かなど)を書入れください。.NET のバージョンが特に重要です。
退会済みユーザー

退会済みユーザー

2018/08/12 01:59

ASP.NET に標準&組込で用意されている検証機能を使わないのは何故ですか? 正規表現で検証できる機能ももちろんあります。それを使わないというのはふつうあり得ないのですけど。
guest

回答2

0

ベストアンサー

C# でのエラーの原因は phoenix3430025 さんの回答の通りですが、ASP.NET に用意されている検証機能を利用すべきというもっと重要と思われることを書いておきます

ASP.NET Web Forms アプリであれば RegularExpressionValidator コントロールを使いましょう。

ASP.NET MVC の場合は、モデルクラスのプロパティに RegularExpressionAttribute データーアノテーション属性を付与してください。

そうすれば、ほとんど自力でコードを書かなくても、クライアント側とサーバー側の両方で動く検証機能が自動的に実装されます。

ASP.NET 組み込みの機能ですので、全ての検証動作が ASP.NET Web アプリとして整合が取れたものになります。これが非常に重要なことです。

よほどの理由がない限り、jquery.validationEngine-ja.js を使うとか、自力で検証用にコードを書くとかの必要はありません。

ASP.NET Web Forms アプリ用の RegularExpressionValidator コントロールを使った一例ですが、以下の記事が参考になると思います。

RegularExpressionValidator を使った入力内容の検証 (ASP.NET プログラミング)
https://www.ipentec.com/document/csharp-aspnet-regular-expression-validator

その記事に書いてあるように、一般的なメールアドレスの検証を行うための正規表現は、デザイナでウィザードベースで設定できます。

質問に書かれた独自のメールアドレス用正規表現を使いたいのであれば、(カスタム) を選んで、[検証の表現(E)]のテキストボックスに最初と最後の / を省いて、^ から $ までの文字列をコピペするだけで OK です。(最初と最後の / は JavaScript 専用)

そうすれば、自動的にクライアント側とサーバー側両方で検証がかかるようになります。

クライアント側で検証 NG の場合はポストバックがキャンセルされます。

ブラウザの JavaScript が無効になっている場合はクライアント側での検証はかからず、ポストバックされますが、サーバー側での検証は行われます。

もちろんメールアドレス以外の任意の正規表現も設定できます。詳しくは以下の記事が参考になると思います。

ASP.NET の正規表現
https://msdn.microsoft.com/ja-jp/library/ms972966.aspx

自力でコードを書くなんてことは普通あり得ないのが理解いただけるのではないでしょうか?

ASP.NET MVC の場合は上に紹介した記事とはやり方が違ってきますが、同等の検証機能を実装できますし、やはり自力で検証用のコードを書くなんてことはあり得ないです。

投稿2018/08/12 03:42

編集2018/08/12 03:46
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reprepjqu

2018/08/12 13:51

ご丁寧に教えて頂き、ありがとうございます。 現在、プライベートでASP.NET MVCを勉強していまして、入力チェックをどうプログラミングしたら良いか考えていました。 これから、RegularExpressionAttributeについて調べていきます。
guest

0

javascriptの正規表現は / (スラッシュ)で検索する文字列を囲みますが、
それをそのまま文字列にしてはダメです。
C#で指定する文字列は「検索文字列」ですから、
最初と最後の / は外さないといけません。
最後の / につづく i とかも要らないです。

投稿2018/08/12 02:25

phoenix3430025

総合スコア135

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reprepjqu

2018/08/12 13:47

教えて頂き、ありがとうございます。 /とiを外したらうまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問