The solution to your problem is that you need to require a white space after the initial P.O matching. That way you will not match addresses that start with Po-. Then you also need to cover the case with just a plane BOX or BIN.
Try something along these lines:
/^\s*((P(OST)?.?\s*O(FF(ICE)?)?.?\s+(B(IN|OX))?)|B(IN|OX))/i
There are many nice tools to make the design of regular expressions a bit easier to overview. One such tool that you can find online is RegExr.