/ /正規表現:検索キーの検証-c#、regex

正規表現:検索キーの検証 - c#、正規表現

正規表現を手伝ってください。 文字列の検証に取り組んでいます。値には%のみを含めることはできません。%がある場合、長さは%を含む3文字を超える必要があります。 %は、文字列内の任意の場所に指定できます(ドットが含まれます)。

これを思いつくことができた。この検証は、%が文字列に含まれている場合にのみ発生します。 %がない場合、検証は必要ありません。

@"^[a-zA-Z0-9".]*%"; //{3,}$";

ありがとう、ナビーン

例:

  • "%" - 失敗します
  • "%12" - 失敗します
  • "%123" - パス
  • "%1234" - パス
  • "12%3" - パス
  • "abc%" - パス
  • "abc" - パス
  • "A" - パス
  • "ABC" - パス

回答:

回答№1の場合は3

私はこれが必要だとは思わない Regex 解決するには、いくつかの文字列メソッドで十分です:

var valid = !input.Contains("%") || input.Length > 3;

あなたが使いたいなら Regex、 はい、どうぞ:

^([^%]+|.{4,})$

回答№2の6

それが検証の範囲であれば、次のように使用した方が良いでしょう Contains("%") そして Length のプロパティ string.

return !value.Contains("%") || value.Length > 3;

単一の正規表現でテストすることは本質的に困難です どちらも 全長および内のパターンのため。もし % 固定位置(開始、終了、開始から2番目の文字など)にあった場合、より適切にフィットしますが、現状では、これは解決すべき問題ではありません 優雅に 単一の正規表現で。

someいRegExを使用して、いくつかのルックアラウンドですが、そのソリューションは異なるRegEx実装間で移植可能ではない可能性があります(たとえば、クライアント側のJavascript検証ではおそらく動作しません)。


回答№3の場合は1

C#で次の式を試してください。

@"^((?=(?>.*?[^%]){3,}).*|[^%]+)$"

例で説明されているように一致します。

  • "%" - 失敗します
  • "%12" - 失敗します
  • "%123" - パス
  • "%1234" - パス
  • "12%3" - パス
  • "abc%" - パス
  • "abc" - パス
  • "A" - パス
  • "ABC" - パス

javascriptで動作するように、同じ式で非キャプチャ、非アトミックグループを使用します(Jayの問題に対処します)。

@"^((?=(?:.*?[^%]){3,}).*|[^%]+)$"

回答№4の場合は1

検証には少なくとも1文字が必要であるという仮定の下で-

 ^(?:[^%]+|.*[^%].*[^%].*[^%].*)$

JonMと同じです(ただし、これを削除する方法はわかりません)。