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

时间:2014-03-07 13:28:47

标签: javascript parsley.js

知道如何在parsley.js中添加多个正则表达式模式验证吗?我的代码看起来像这样:

<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"
/>

当我运行它时,我只收到两个案例的“错误1”消息。

2 个答案:

答案 0 :(得分:2)

可悲的是,这是不可能的。

您只能在字段中注册一次特定验证器。

要么你的正则表达式更多地工作以混合两个要求,要么你创建自己的海关验证器(具有不同的名称),每个验证器都有其验证部分。

最佳

答案 1 :(得分:0)

根据您的REGEX模式,您似乎正在尝试验证多个邮政编码。那不是用REGEX可以做的事情,并且不能用Parsley使用多种模式,但是可以制作一个custom Parsley validation。这是我为验证美国(邮政编码)和加拿大邮政编码而编写的示例。您不需要接受的答案所建议的“具有不同名称的自定义验证器”。

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'
    }
});

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=""
>

正则表达式的模式来自:http://html5pattern.com/Postal_Codes