Javascript 如何使用parsley.js添加多个基于模式的验证器?

Javascript 如何使用parsley.js添加多个基于模式的验证器?,javascript,parsley.js,Javascript,Parsley.js,知道如何在parsley.js中添加多个regex模式验证器吗?我的代码如下所示: <input type="password" id="password" name="password" autocomplete="off" data-parsley-pattern="^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$" data-parsley-pattern-message="error1" data-parsley-pattern="\\s\\s"

知道如何在parsley.js中添加多个regex模式验证器吗?我的代码如下所示:

<input type="password" id="password" name="password" autocomplete="off"
data-parsley-pattern="^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$" 
data-parsley-pattern-message="error1"
data-parsley-pattern="\\s\\s" 
data-parsley-pattern-message="error2"
/>


当我运行它时,两种情况下我只会收到“error1”消息。

遗憾的是,这是不可能的

对于字段中的特定验证器,只能注册一次

要么在regexp上多做一点工作来混合这两种需求,要么创建自己的海关验证器(使用不同的名称)来完成每个验证器的验证部分


最佳

根据您的正则表达式模式,您似乎正在尝试验证多个邮政编码。这不是你可以用正则表达式做的事情,你不能用欧芹的多种模式,但你可以做一个。下面是我为验证美国邮政编码和加拿大邮政编码而编写的示例。您不需要像公认的答案所建议的那样“使用不同名称的自定义验证器”

JavaScript

window.Parsley.addValidator('validateZipcode', {
    validateString: function(value) {
        if (/^(\d{5}([\-]\d{4})?)$/.test(value)) { // United States Zip Code Format
            return true;
        } else if (/^([A-Za-z][0-9][A-Za-z] [0-9][A-Za-z][0-9])$/.test(value)) { // Canada Postal Code Format
            return true;
        } else {
            return false;
        }
    },
    messages: {
        en: 'US format:<br>00000 or 00000-0000<hr class="mt-1 mb-1">Canada format:<br>A0A A0A'
    }
});
window.Parsley.addValidator('validateZipcode'{
validateString:函数(值){
如果(/^(\d{5}([\-]\d{4})$/.test(value)){//美国邮政编码格式
返回true;
}如果(/^([A-Za-z][0-9][A-Za-z][0-9][A-Za-z][0-9])$/.test(value)){//加拿大邮政编码格式
返回true;
}否则{
返回false;
}
},
信息:{
中文:“美国格式:
00000或00000-0000加拿大格式:
A0A” } });
HTML

<label class="hidden" for="zip-code">Zipcode</label>
<input
    required
    type="text"
    id="zip-code"
    placeholder="Zip Code"
    maxlength="10"
    data-parsley-trigger="change"
    data-parsley-required-message="Zipcode required"
    data-parsley-validate-zipcode=""
>
Zipcode
正则表达式模式来自: