如何使用 JavaScript 验证此表单上的邮政编码?

Posted

技术标签:

【中文标题】如何使用 JavaScript 验证此表单上的邮政编码?【英文标题】:How do I validate a Postcode on this form using JavaScript? 【发布时间】:2012-02-18 18:45:20 【问题描述】:

我对 javascript 没有那么丰富的经验,并且我已经尝试了一段时间,以便在用户单击提交按钮时以错误的格式输入邮政编码时让此表单显示警告消息。到目前为止,我已经将所有内容放在一个验证所有字段的函数中,我使用名称来引用函数内部的字段。 (对不起,如果我没有正确缩进)

var g=document.forms["myform"]["postcode"].value;
if (g==null || g=="")

    alert("Please enter your Post CODE");
    return false;

var regPostcode = /^([a-zA-Z])1([0-9][0-9]|[0-9]|[a-zA-Z][0-9]
[a-zA-Z]|[a-zA-Z][0-9][0-9]|[a-zA-Z][0-9])1([ ])([0-9][a-zA-z][a-zA-z])1$/;
if(regPostcode.test(postcode) == false)

    alert("That Post Code is incorrect");
    return false;

这是我正在使用的表单中特定字段的 html

<div class=”field_container”><label>Post Code</label><input type=”text” name="postcode" id="postcode" /></div>

【问题讨论】:

UK Postcode Regex (Comprehensive)的可能重复 邮政编码格式在所有国家都不相同。所以没有适用于所有邮政编码的统一正则表达式。 【参考方案1】:

假设您的正则表达式对于您所针对的国家/地区是正确的,我会尝试这样的事情:

var g = document.forms["myform"]["postcode"].value;
var regPostcode = /^([a-zA-Z])1([0-9][0-9]|[0-9]|[a-zA-Z][0-9]
    [a-zA-Z]|[a-zA-Z][0-9][0-9]|[a-zA-Z][0-9])1([ ])([0-9][a-zA-z][a-zA-z])1$/;
if (!g)

    alert("Please enter your Post CODE");
    return false;

if (!g.match(regPostcode))

    alert("That Post Code is incorrect");
    return false;

正如@Shiplu 所说,没有统一的正则表达式适用于每个国家/地区的邮政编码。您应该确保要阻止居住在其他国家/地区的人提交表单。

希望这会有所帮助。

【讨论】:

【参考方案2】:

此外,您应该像这样添加一个简单的可访问性增强功能:

<div class="field_container">
    <label for="postcode">Post Code</label> <!-- the "for" attribute should match the "id" attribute of the input it corresponds to -->
    <input type="text" name="postcode" id="postcode" />
</div>

【讨论】:

以上是关于如何使用 JavaScript 验证此表单上的邮政编码?的主要内容,如果未能解决你的问题,请参考以下文章

7.2 Javascript:表单验证-提交表单

如何验证我使用 bootstrap 3 创建的表单?

在javascript中验证邮政编码

如何使用没有 jQuery 但纯 Javascript 的 AJAX 提交此表单

如何使用 JavaScript 和 AJAX 根据邮政编码自动填充城市和州?

如何调整此 javascript 以返回少了最后 2 个字符的邮政编码? [复制]