【发布时间】:2012-06-18 11:25:13
【问题描述】:
我有一个验证英国邮政编码的 javascript 正则表达式。它工作得很好,但它没有考虑到有些人在中间写空格而其他人没有。我尝试添加此内容,但无法解决:S UK 邮政编码主要是 2 个字母,后跟 1 或 2 个数字,可选空格和 1 个数字和 2 个字母。
这是我的正则表达式,它验证没有空格的邮政编码:
[A-PR-UWYZa-pr-uwyz0-9][A-HK-Ya-hk-y0-9][AEHMNPRTVXYaehmnprtvxy0-9]?[ABEHMNPRVWXYabehmnprvwxy0-9]?{1,2}[0-9][ABD-HJLN-UW-Zabd-hjln-uw-z]{2}|(GIRgir){3} 0(Aa){2})$/g
有什么想法吗?
编辑
当我意识到一组缺少小写字符时,我更改了正则表达式。
【问题讨论】:
-
@jsalonen,这不是“恶意输入”,当然服务器端检查是必须的!但是您还想向您的用户展示客户端大小的“哦,对不起,先生,我认为您在此处犯了一个错误,您想纠正它吗”
-
如果您在服务器端检查邮政编码,您可以在客户端检查中重复使用该代码:1) 将数据发送到服务器进行验证,2) 如果验证失败(在服务器端)返回到带有特定错误消息的表单。通过这种方式,您不需要维护两个单独的邮政编码检查代码!
-
@PhilFaceplantYoung
/i使您的正则表达式不区分大小写:[A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]?{1,2}[0-9][ABD-HJLN-UW-Z]{2}|(GIR){3} 0A{2})$/gi -
BFPO 邮政编码的格式非常不同
-
总是可以作弊并将其转换为大写并删除任何空格,然后再将其传递给正则表达式。
标签: javascript regex postal-code