javascript

时间:2015-04-22 09:23:14

标签: javascript regex validation pattern-matching

我正在尝试使用JavaScript中满足的所有条件来验证PO框但是它对我不起作用。它不匹配任何案例

下面是我使用的reg表达式

function validatestreetAddress(street){
var streetval=street.value;
var pattern =new RegExp('/^ *((#\d+)|((box|bin)[-. \/\\]?\d+)|(.*p[ \.]? ?(o|0)[-. \/\\]? *-?((box|bin)|b|(#|num)?\d+))|(p(ost)? *(o(ff(ice)?)?)? *((box|bin)|b)? *\d+)|(p *-?\/?(o)? *-?box)|post office box|((box|bin)|b) *(number|num|#)? *\d+|(num|number|#) *\d+)/i');


 if (streetval.match(pattern)) { 
                    alert('We are unable to ship to a Post Office Box.\nPlease provide a different shipping address.'); 
}

只有一个reg exp适用于我,但它不能满足PO盒验证的所有条件。

var pattern = new RegExp("\\b[P|p]*(OST|ost)*\\.*\\s*[O|o|0]*(ffice|FFICE)*\\.*\\s*[B|b][O|o|0][X|x]\\b");

任何人都可以建议注册前有什么问题。

我想匹配“Box 123”,“Box-122”,“Box122”,“HC73 PO Box 217”,“PO Box125”,“PO Box”,“PO 123”,“PO Box 123”, “PO Box”,“POB 123”,“POB 123”,“POB”,“POB 123”,“POB”,“POBOX123”,“Po Box”,“Post 123”,“Post Box 123”,“Post” Office Box 123“,”邮政信箱“,”方框#123“,”方框122“,”方框123“,”数字123“,”p框“,”邮箱“,邮局信箱 - user3495160 3小时前

不匹配= [“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”];

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

("(post\s*(office)?)?\s*box\s*[#-]?\s*(\d+)?"|
"[\w\s]*?p(ost)?\s*[.-]?\s*o?\s*\.?\s*b?(ox)?\.?\s*(\d+)?"|
"\s*number\s*\d+")

请参阅DEMO

答案 1 :(得分:0)

还有很多方法可以拼出一个P.O.框地址比您在问题中列出的地址。确定地址是否为P.O.的最佳方法。框与否是通过地址验证/标准化工具运行它。 (该公司为我工作,让一个叫YAddress)。如果您的地址验证和标准化的形式法术恰好" PO BOX&#34 ;,您有答案不管是什么原地址的拼写是。地址验证工具会考虑数千种可能的拼写错误,拼写错误,常见缩写,替代格式等。