web-dev-qa-db-ja.com

.netアプリケーションでの正規表現の保守

誰もが正規表現の問題を抱えていると確信しています。

約30人の開発者がmvc3Webアプリケーションに取り組んでいる大きなアプリケーションがあり、2つの正規表現検証(フロントエンドとサーバー側)を維持するのは悪夢になりつつあります。

すべての正規表現を1か所に保持する方法はありますか?エンティティの属性として使用したり、コントローラーでの検証に使用したりできるようにするには?

2
Shekhar

現在、検証に何を使用していますか?通常、デフォルトの組み込みDataAnnotationsは、説明しているとおりに機能します。別のオプションは FluentValidation で、これはクライアント側の検証でも機能します。

いずれにせよ、これは一般的に解決された問題です。

1
Wyatt Barnett

正規表現をデータベースのテーブルに保存できます。名前はキー、次にフロントエンドとバックエンドで使用する2つのバリアントを使用して、次のようにします。

regex_name | front_end                       | back end
-------------------------------------------------------------------------------
post_code  |"[a-zA-Z]\d[a-zA-Z] \d[a-zA-Z]\d"|"[a-zA-Z]\d[a-zA-Z] \d[a-zA-Z]\d"

もちろん、これをデータベースに入れると、データベースに接続する前に正規表現が必要な場合に問題が発生する可能性があります(この場合はおそらく発生しませんが、わかりません)。したがって、静的なものを使用して同様のアイデアを実装できます。名前の辞書と正規表現バージョンのテキストだけを持つクラス。

または、これをCSVファイルに保存し、アプリケーションの起動時にキャッシュにロードすることもできます。これを行うには多くの方法がありますが、あなたのチームにとって何が最善かわかりません。

javaScript(ECMA)とC#(NET)の共有正規表現について話しているのは正しいですか? .NETとECMAは異なるフレーバーを使用するため、これは不可能です。詳細については、 正規表現フレーバーの比較 を参照してください。

0
marc.d

正規表現文字列をWeb構成に配置し、ページとコードで動的に呼び出すことができます。このようにして、文字列は1つの場所に存在し、再コンパイルを必要とせずに変更でき、アプリケーション全体でコードで使用できるようになります。

0
SoylentGray