1

formvalidationプラグインを使用しており、2 つの正規表現パターンが必要です。1 つは少なくとも 1 桁の 6 文字を検出するもので、もう 1 つはユーザーが入力したパスワードのスペースを検出するものです。エラーメッセージは両方で異なるはずです。これは 2 つのパターンが必要です。

これまでのところ、1 つの JavaScript パターンを使用しようとしました

validators: {
        regexp: {
            regexp: /^[a-z\s]+$/i,
            message: 'The full name can consist of alphabetical characters and spaces only'
        }
   }

および 1 つのインライン パターン

<input type="text" class="form-control" name="fullName"
      data-fv-regexp="true"
      data-fv-regexp-regexp="^[a-z\s]+$
        data-fv-regexp-message="The full name can consist of alphabetical characters and spaces only" />

1 つの JavaScript と 1 つのインラインがある場合、インラインのみが使用されます。

また、2つのjavascriptパターンを試しましたが、これはエラーです

validators: {
        regexp: {
            regexp: /^[a-z\s]+$/i,
            message: 'The full name can consist of alphabetical characters and spaces only'
        },
        regexp: {
            regexp: different regex,
            message: 'different message'
        }
   }

誰もこれを行う方法を知っていますか?

4

1 に答える 1

1

私があなたの質問を誤解した場合は、私を修正してください。

同じフィールドで 2 つの正規表現を使用する唯一の方法は、callbackバリデーターを使用することです。

次の手順に従うことをお勧めします。

  • まず、パスワードの長さを確認します。パスワードが 6 文字を超えている場合は、エラーで終了します (スペースの使用を許可する場合は、正規表現を使用してスペースをチェックする必要はありません)。

  • 次に、使用された桁数を数えます。その数が 1 未満の場合は、エラーで終了します (ここでは正規表現を使用できます)。

次のコードを参照してください。

$('#yourForm')
  .formValidation({
    framework: 'bootstrap',
    icon: {
        valid: 'glyphicon glyphicon-ok',
        invalid: 'glyphicon glyphicon-remove',
        validating: 'glyphicon glyphicon-refresh'
    },
    fields: {
        password: {
            // When a field has multiple validators, validation for this field will be
            // terminated upon the first encountered error. Thus, only the very first
            // error message related to this field will be displayed to the user.
            //
            // See verbose docs: http://formvalidation.io/settings/#form-verbose
            verbose: false,
            validators: {
                notEmpty: {
                    message: "The password is required and cannot be empty."
                },
                callback: {
                    callback: function(value, validator, $field) {
                        // Count the number of digits in your password
                        var digitsCount = value.search(/[0-9]/);

                        // Check for 6 characters length.
                        if (value.length !== 6) {
                            return {
                                valid: false,
                                message: "The password must be at least 6 characters long."
                            }
                        }

                        // Check the number of used digits
                        if (digitsCount < 1) {
                            return {
                                valid: false,
                                message: "The password must contains at least one digit."
                            }
                        }

                        return true;
                    }
                }
            }
        }
    }
})

実際の例:

参考文献:

于 2015-06-09T15:22:33.463 に答える