0

I need to provide the P.O Box validation for the address Fields Now we have a regex validation in jquery which has some limitations as follows:

  1. If an address polo Rd is given, it identifies "po" in polo and alerts error message. So, we should frame a new validation which should not accept address lines with the values:

    "PO BOX", "PO BIN", "BIN", "P.O BOX", "P.O BIN", "P.O", "PO"

  2. the above values can be in any case

  3. spaces before, in between and after the above words should also be found and validated.
    For example: " P O 1234 " should be validated and alert error message.

  4. But "Polo Rd", "Robin Rd", "testbintest" should be accepted as valid address in both the address lines.

The code right now in jquery validation is:

jQuery.validator.addMethod("nopobox", function(value, element) {
   return this.optional(element) || ! /(P(OST)?\.?\s*O(FF(ICE)?)?\.?\s*(?<!(BOX)|(BIN)))|(^[^0-9]*((P(OST)?\.?\s*O(FF(ICE)?)?\.?)|(?<!(BOX)|(BIN))))/i.test(value);
}, "");

The new code designed is partially working like its taking

Polo road 
Testbintest 

But its throwing an error for

Robin road
Robox road 

The below is the new code which is partally working

jQuery.validator.addMethod("nopobox", function(value, element) {
     return ! /(?:p(?:ost)?\.?\s?[o|0](?:\.|ffice)?)\b|(?:b(?:[o|0]x)|(?:in))\b/i.test(value);
}, "PO Boxes are not allowed.");
Andrew Moore
  • 93,497
  • 30
  • 163
  • 175
raj
  • 15
  • 1
  • 7
  • Could you please reformat your post a bit so it's a little more readable. Thanks! – Amber Aug 05 '09 at 05:16
  • 2
    Duplicate: http://stackoverflow.com/questions/1228287/post-box-bin-validation – Gumbo Aug 05 '09 at 05:24
  • Hi Its very simple I need a regex expression for post box validation which should throw an error for the fallowing words ( "PO BOX", "PO BIN", "BIN", "P.O BOX", "P.O BIN", "P.O", "PO") in the j query function – raj Aug 05 '09 at 05:25
  • yes Iam reposting it again as I could not get an anser in my old post which I posted yesterday regex is very new for me so I need help thanks – raj Aug 05 '09 at 05:26

3 Answers3

2

Have you checked my comment in your old question?

The proper behavior would have been to update the original question with information of your own progress instead of re-posting.

Patience is a virtue.


This is the reply that I wrote in your original question:

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.

Community
  • 1
  • 1
dala
  • 1,975
  • 3
  • 14
  • 15
0

Sorry I am not following. So your looking at what the address line and if it has "PO" as the first letters then it should fail on these?

"PO BOX", "PO BIN", "BIN", "P.O BOX", "P.O BIN", "P.O", "PO"

I am not getting why your looking at "polo Rd" and somehow this seems to decide what your going to let through or not let through.

Then on the flip side you say that these are valid

But "Polo Rd", "Robin Rd", "testbintest" should be accepted as valid address in both the address lines.

But at first you said "Polo Rd" is not valid.

Then I don't get your other validation tests like I don't see why you user can't have this

"Testbintest"

Like whats wrong with it. I thought you just are checking for like P.O box addresses since you don't ship to them or something like that.

I am lost

Your further down post says you just want check for just those words. You can try this

(\s)*P(\s)*.?(\s)*O((\s)*B(\s)*[O,I](\s)*[N,X])?

Test with these expressions

PO
P.O
                P. O
               PO
PO BIN
PO BOX
BIN
P.O BOX
P.O BIN
 P O 1234 

You can try this one also.

 ((\s)*[Pp](\s)*(.)?(\s)*[Oo](\s)*)*([Bb](\s)*[OIoi]+(\s)*[NXin])*

Tested with.

P O 1234 
P.O
                P. O
               PO
PO BIN
PO BOX
BIN
P.O BOX
P.O BIN
Robin road
Robox road
MY little poney P.O test
Testbintest
bob
aagc

Just does not get "P O 1234"

The thing that is really making it hard for me is how many can you expect in an address line do you have to check every word?

chobo2
  • 83,322
  • 195
  • 530
  • 832
0

If you really want to check against a list of words, it's more maintainable to run a list of tests, each for a particular word.

reinierpost
  • 8,425
  • 1
  • 38
  • 70