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;
}
}
}
}
}
})
实例:
参考文献:
我正在使用 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;
}
}
}
}
}
})