希望验证邮政信箱,但想知道是否存在此类验证。我有地址字段分成地址1和地址2(如PO,公寓,套房信息会去)邮政信箱验证
例子:
Address 1: 123 Main Street
Address 2: Suite 100
City: Any Town
State: Any State
Zip: Any Zip
邮政信箱(能分BIN为BOX以及)的例子:
- 邮政信箱123
- PO框123
- PO 123
- 邮政信箱123
- P.O 123
- 箱123
- POB 123
- P.O.B 123
- P.O.B. 123
- 后123
- 邮政信箱123
(我知道有可能更多,我需要验证的,但是这是我能想到的,随时补充或更正)
我知道一个正则表达式将是最适合这一点,我已经看到了堆栈#1的其他问题,#2
从另一个问题使用正则表达式,我得到了良好的效果,但它忽略了一些我认为应该赶上
$arr = array (
'PO Box 123',
'P.O. Box 123',
'PO 123',
'Post Office Box 123',
'P.O 123',
'Box 123',
'#123', // no match
'123', // no match
'POB 123',
'P.O.B 123', // no match
'P.O.B. 123', // no match
'Post 123', // no match
'Post Box 123' // no match
);
foreach($arr as $po) {
if(preg_match("/^\s*((P(OST)?.?\s*O(FF(ICE)?)?.?\s+(B(IN|OX))?)|B(IN|OX))/i", $po)) {
echo "A match was found: $po\n";
} else {
echo "A match was not found: |$po| \n";
}
}
为什么它不捕获数组中的最后两个值?
+1在提问前做好研究。 – srijan 2012-10-01 14:40:10
对于一个JS问题,但仍然是一个很好的答案:https://stackoverflow.com/questions/5680050/po-box-regular-expression-validation – turibe 2017-09-22 21:25:35