3

非常に複雑な正規表現でASPのRegularExpressionValidatorを使用しています。これはすでにうまく機能しています:

(?=^.{10,}$)(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[+#<>;.,:|\\-@*!\"§$%&/()=?`´]).*$

ただし、現在のユーザー名がパスワードの一部(大文字と小文字を区別しない)であるかどうかのチェックを追加するには、これを拡張する必要があります。

たとえば、ユーザー名はMeierで、ユーザーはパスワードを作成できません。

i012k34KmeIer567 +

そこで、式を次のように変更しました

(?=^.{10,}$)(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[+#<>;.,:|\\-@*!\"§$%&/()=?`´])(?i)(?!.*meier)(?-i).*$

asp:RegularExpressionValidatorそしてそれをとしてに追加しましたValidationExpression

残念ながら、そうすると、パスワードを追加するときにブラウザでエラーが発生します。

"SyntaxError: invalid quantifier"

ブラウザに表示される問題のあるコードは次のとおりです。

function RegularExpressionValidatorEvaluateIsValid(val) {
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
        return true;
    **var rx = new RegExp(val.validationexpression);**
    var matches = rx.exec(value);
    return (matches != null && value == matches[0]);
}

の線"**"は問題のある線です。

私もすでに試しRegEx.IsMatchましたが、そこで正規表現が機能します。誰かが私がこれを解決する方法を知っていますか、または誰かが私が間違っていることを教えてもらえますか?

どんな助けでも大歓迎です!:)そして、私が十分にうまく説明していないことを説明したかどうか、遠慮なく尋ねてください。

4

1 に答える 1

4

EnableClientScript="False"クライアント側の検証を無効に設定しない限り( msdnを参照)、式はJavascriptの正規表現エンジンに対して有効である必要があります。

そのためvar rx = new RegExp(val.validationexpression);、エラーが発生し、式が無効になります。

(?i)Javascriptはインラインの大文字と小文字を区別するフラグをサポートしておらず(?-i)、長い文字クラスを改訂する必要があります

 [+#<>;.,:|\\@*!"§$%&/()=?`´-]

また、Javascriptでパスワードの除外先読みのためだけに大文字と小文字を区別しないようにすることはできないため、パスワードを個別にテストすることをお勧めします。

于 2013-01-30T15:38:05.800 に答える