希望验证PO Box,但想知道是否存在此类验证.我将地址字段拆分为地址1和地址2(这样的PO,Apt,套件信息将去哪里)
例:
Address 1: 123 Main Street
Address 2: Suite 100
City: Any Town
State: Any State
Zip: Any Zip
Run Code Online (Sandbox Code Playgroud)
PO Box(也可以用于BOX的子BIN)示例:
(我知道我可能需要更多验证,但这是我能想到的,随意添加或更正)
我知道RegEx最适合这个,我在Stack #1,#2上看到了其他问题
使用另一个问题的RegEx我得到了很好的结果,但它错过了我认为它应该捕获的一些
$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";
}
}
Run Code Online (Sandbox Code Playgroud)
为什么它没有捕获数组中的最后两个值?