【问题标题】:Parsley.js UK Postcode checkParsley.js 英国邮政编码检查
【发布时间】:2018-01-11 03:54:50
【问题描述】:

我编写了以下内容以插入到我的 Parsley extras 文件中,以允许通过 parsley.js 验证英国邮政编码

//postcode
window.Parsley.addValidator('postcode', {
    requirementType: 'string',
    validateString: function(value, requirement) {
        var postcode = value.match(/^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([AZa-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))[0-9][A-Za-z]{2})$/) || [];
        return postcode.length >= requirement;
    },
    messages: {
         en: 'The postcode entered is invalid.'
    }
});

它似乎不接受邮政编码中间的空格,这让我感到奇怪,因为我觉得用户总是试图添加它。

澄清一下,我设置的规则中的正则表达式直接来自UK government advice on the issue。

我有一个无效的函数还是这个正则表达式按预期工作?如果其他人有使用英国邮政编码的欧芹,我会很感激任何信息,因为令人惊讶的是,欧芹 github 页面或互联网上的其他地方似乎根本没有涵盖这些信息。

【问题讨论】:

    标签: validation parsley.js postal-code


    【解决方案1】:

    看起来您的正则表达式只是缺少一个空格。

    请看下面的比较:

    You:
    ^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([AZa-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))[0-9][A-Za-z]{2})$
    Gov:
    ^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$
    

    您似乎还缺少一个破折号:A-Z 而不是 AZ。

    【讨论】:

    • 非常感谢丹!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多