2009-10-23 16 views
7

は単純な作業のように見える - 特定の長さの文字列をテストする正規表現を得る: ^ {1500} $正規表現改行文字と文字列の文字列の長さを制限する

しかし、文字列は「\ rを持っている場合\ n "上記の試合よりも常に失敗します!

文字列の一部として改行文字を受け入れるには、どのように正規表現を使用しますか?

私は<asp:TextBox TextMode="Multiline">を持っており、中にどのようなユーザーの種類の長さをチェックするためにRegularExpressionValidatorを使用しています。

は、文字列の長さをチェックする前に改行を取り除くことができ、 アンドレイ

答えて

12

入力の検証時にRegexOptions.Singlelineオプションを使用できます。これは、入力を1行の文として扱い、それをそのまま構文解析します。

^(.|\s){1,500}$ 

これは、複数行の入力で動作するはずです:

は、そうでない場合は、次の式を試してみることができます。

+0

閉じるブラケットを中かっこで置き換えてください。さもなければそれは働いた、感謝! – Andrey

+0

typo :-)を修正しました。 –

+0

Upvotedですが、検証にこれを使用するのは技術的に注意が必要です。例えば、これは500 [ENTER]でバイパスすることができます。 – AmmarCSE

0

をいただき、ありがとうございますか!それはサーバー側の検証時に簡単に行うことができます。 (in .netではカスタムバリデーターを使用することができます)

UXの観点からは、クライアントサイドの「文字カウンタ」も実装します。見つけられるものはたくさんあります。 jQueryにはいくつかのオプションがあります。次に、カスタムバリデーターを実装してサーバー側のみを実行し、クライアント側の検証として文字カウンターを使用することができます。入力中に何人の文字が残っているかをユーザーが確認できるようになりました。

+0

私はasp.netのRegularExpressionValidatorを使用していますが、提供された正規表現を使用してクライアント側とサーバー側の両方の検証を行います – Andrey

+0

私の提案は、実際にデータを検証するためだけのREGEXサーバ側(クライアント側をその制御に対してオフにする) DBに入る。クライアント側では、事実の後でそれを検証するのではなく、ユーザーエクスペリエンスの観点からはるかに良い指標であるライブの文字カウンタを提案したいと思います。これは実際にjQueryや何かを追加するのが簡単な場合にのみ意味をなさないでしょう。そうでない場合は、この1つのフィールドだけの価値がないかもしれません。 –

+0

er、言い換えると... REGEXが依然として問題である場合、カスタムコントロールを使用してサーバー側を検証します。簡単に文字列の長さをサーバー側でチェックし、REGEXを忘れることができます。次に、文字列をクライアント側でカウントするjavascriptメソッドを使用します。 –

0

RegexOptionsを設定することができないため、ここであなたを悩ませています。これはRegularExpressionValidatorにあるので、正規表現自体のオプションを設定することができます。

私は、これは動作するはずだと思う:

(?s)^.{1,500}$ 

(?の)部分はドットがラインを含むすべての文字がフィードを一致させることができます単一行オプションをオンにします。それが価値があるのは、とそれをインラインステートメントとして設定するための表記です。

+0

+1良い提案。おいしいサイト(RegexHero.net):) –

+0

ありがとう。私は試してみる。;) –

+0

この式はクライアント側の検証で壊れます--Javascriptは理解できません(?) – Andrey

関連する問題