我正在尝试验证邮政编码的输入,现在这个邮政编码应该适用于美国,加拿大,英国,所有国家,但省略任何特殊字符,所以我尝试,首先检查无效字符,如果通过,然后我检查邮政编码要么是美国,要么只是为了确保有有效字符且不超过 8 个(只要现在是美国,它们之间的空格就可以(其中包括 - 表示 5 + 4)
我遇到的问题是,例如 11215 对于有效字符验证返回 false,而 11215@@ 也返回 false。
这是我的正则表达式:
var reg1 = /^[\^$%@!#&\*:<>\?\/\\~\{\}\(\)\+|]+$/;
var reg2 = /(^\d{5}$)|(^\d{5}-\d{4}$)|(([a-z0-9]{8})*$)/
var isOk = reg1.test("11215"); // returns false!
if(isOk)
{
isOk = isOk && reg2.test("11215");
}
var isOk2 = reg1.test("11215@@"); // returns false also!
if(isOk2)
{
isOk2 = isOk2 && reg2.test("11215@@");
}
“坏字符”测试,reg1
一直会false
除非你的字符串完全由“坏字符”组成。我认为这不是您想要的行为。
var matchBad = /[^\s\da-z\-]/i;
// Match all non-whitespace, non-digit, non-alpabet, non-hyphen
if (false === matchBad.test("11215")) { // no bad chars detected
console.log('pass!');
// continue checking validity..
} else { // bad chars detected
console.log('fail!);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)