formvalidation 使用两个正则表达式模式

formvalidation use two regex pattern

我正在使用 formvalidation 插件,我想要两个正则表达式模式。一个检测 6 个字符,至少有 1 个数字,另一个检测用户输入的密码中的空格。两者的错误消息应该不同这是一个我需要两种模式。

到目前为止我尝试使用一个 javascript 模式

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

和一个内联模式

<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 个内联时,它将只使用内联。

我也尝试了两个 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'
        }
   }

有人知道怎么做吗?

Correct me if I misunderstood your question.

在同一字段上使用两个正则表达式的唯一方法是使用 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;
                    }
                }
            }
        }
    }
})

实例:

参考文献: