这是我的代码,但我永远无法触发警报。
$(document).ready( function (){
$("[id*='txtAddress1S']").blur(function() {
var pattern = new RegExp('\b[P|p]*(OST|ost)*\.*\s*[O|o|0]*(ffice|FFICE)*\.*\s*[B|b][O|o|0][X|x]\b');
if ($("[id*='txtAddress1S']").val().match(pattern)) {
alert('We are unable to ship to a Post Office Box.\nPlease provide a different shipping address.');
}
});
});
最佳答案
我尝试了在互联网上找到的几种 PO Box RegExp 模式,包括 Stack Overflow 上发布的那些模式,但没有一个通过我们的测试要求。因此,我在下面发布了我们的 RegExp 和我们的测试集:
var poBox = /^ *((#\d+)|((box|bin)[-. \/\\]?\d+)|(.*p[ \.]? ?(o|0)[-. \/\\]? *-?((box|bin)|b|(#|n|num|number)?\d+))|(p(ost|ostal)? *(o(ff(ice)?)?)? *((box|bin)|b)? *(#|n|num|number)*\d+)|(p *-?\/?(o)? *-?box)|post office box|((box|bin)|b) *(#|n|num|number)? *\d+|(#|n|num|number) *\d+)/i;
var matches = [ //"box" can be substituted for "bin"
"#123",
"Box 123",
"Box-122",
"Box122",
"HC73 P.O. Box 217",
"P O Box125",
"P. O. Box",
"P.O 123",
"P.O. Box 123",
"P.O. Box",
"P.O.B 123",
"P.O.B. 123",
"P.O.B.",
"P0 Box",
"PO 123",
"PO Box N",
"PO Box",
"PO-Box",
"POB 123",
"POB",
"POBOX123",
"Po Box",
"Post 123",
"Post Box 123",
"Post Office Box 123",
"Post Office Box",
"box #123",
"box 122",
"box 123",
"number 123",
"p box",
"p-o box",
"p-o-box",
"p.o box",
"p.o. box",
"p.o.-box",
"p.o.b. #123",
"p.o.b.",
"p/o box",
"po #123",
"po box 123",
"po box",
"po num123",
"po-box",
"pobox",
"pobox123",
"post office box",
"Post Box #123"
];
var nonMatches = [
"The Postal Road",
"Box Hill",
"123 Some Street",
"Controller's Office",
"pollo St.",
"123 box canyon rd",
"777 Post Oak Blvd",
"PSC 477 Box 396",
"RR 1 Box 1020"
];
关于javascript - 邮政信箱正则表达式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680050/