2016-04-16 14 views
2

regex属性(MVCデータアノテーション)でtrueを返す一致が見つからない場合は、この式を否定できますか?正規表現の否定MVC検証属性

パターンが一致している必要があります:未満8つの文字や数字、あるいは全く大文字または特殊文字 と

  • ものと
  • 何も無いと
  • ものと

    1. 何かを

      この表現/パターンをネゲートしたい

      [RegularExpression(@"^(.{0,7}|[^0-9]*|[^A-Z]*|[a-zA-Z0-9]*)$")] 
      

      ノー成功を収めて?!を試してみました:

      [RegularExpression(@"^(?!.{0,7}|[^0-9]*|[^A-Z]*|[a-zA-Z0-9]*)$")] 
      

      この回答への参照のうえ:Regex password validation, reverse logic

  • +1

    「」(?:?{0,7} | [^ 0-9] * | [^ AZ] * | [a-zA-Z0-9] *)$を試すことができます。 * $ "'。 –

    +0

    @WiktorStribiżew、パッシブノンキャプチャグループは欠けていた部分でした。 ありがとうございます!あなたは答えとして投稿することができ、私はそれを受け入れます。 – Legends

    答えて

    1

    いくつかのアンカーの選択肢を含む式を否定するには、アンカー否定先読み内のグループにそれらを必要とします。

    したがって、単に基(捕捉または非捕捉のいずれか)を追加:RegularExpressionAttributeは、完全な文字列の一致を必要とするので

    "^(?!(?:.{0,7}|[^0-9]*|[^A-Z]*|[a-zA-Z0-9]*)$).*$" 
    

    を、Iは.*$を追加しました。