0

さまざまな機能に基づいてパスワードをスコア付けしていますが、正規表現が正しいとは思いません。

    If Regex.IsMatch(password, "/\d+/", RegexOptions.ECMAScript) Then
        'Contains a number
        score += 1
    End If

    If Regex.IsMatch(password, "/[a-z]/", RegexOptions.ECMAScript) Then
        'Contains a lowercase letter
        score += 1
    End If

    If Regex.IsMatch(password, "/[A-Z]/", RegexOptions.ECMAScript) Then
        'Contains an uppercase letter
        score += 1
    End If

    If Regex.IsMatch(password, "/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript) Then
        'Contains special character
        score += 2
    End If

これを修正するにはどうすればよいですか? これらはVB.NETではなくC#用にフォーマットされていると思います。

4

1 に答える 1

1

.Net Regex クラスは、正規表現の生のテキストを取ります。

/文字でラップしないでください。それらは単にリテラル テキストと一致します/

その他の注意事項:

  • あなたは必要ありませんRegexOptions.ECMAScript
  • 文字クラスはコンマで区切られていません
  • 多数の特殊文字が欠落しています。否定されたクラスを使用する (すべて英数字以外の文字)
  • Regex毎回各正規表現を再解析するのではなく、再利用可能なインスタンスに事前コンパイルすることで、高速化できます。
于 2013-07-03T19:10:35.287 に答える