Ok, I am a little bit confused, as the validation rule you posted looks like a number validation, not a postcode validation.
Did you try commenting out or removing the validation for the postcode to get the form to work properly ?
Here's how server validation works...
When the form is posted, the value from the (eg postcode) field is passed into a function (lets say WAValidateZC) and tested against certain parameters, which, if it conforms, creates no errors.
If all of the fields to be tested generate no errors, the form is processed, otherwise the error is flagged and the user is directed back to the original page.
There is a standard webassist function for validating zip code called WAValidateZC and this can be accessed by going to server behaviors and choosing add, then webassist->validation->server validations.
The problem is the standard WAValidateZC validation only checks for 5 and 9 digit us, Canadian and UK postal code formats.
I needed to validate for AUS and NZ formats too, but the function can't cope with this at present, and you cannot do it via the server behaviour interface. you need to code by hand.
So, here's what I did...
To start with, I created a standard postcode validation using the Webassist validation for Zip Code by adding this server behavior via the interface.
I then tested it thoroughly using various US and UK postcodes/zipcodes
The validation functions are on a page called wavt_scripts_php.php which is stored in the webassist/form_validations folder.
I created a modified version of the function to take in a 5th parameter, (AUS/NZ postcode), called it WAValidateZCNew and added it to the bottom of the wavt_scripts_php.php page and saved the page.
(I posted the code for this in another thread)
I then found the line on my page which was validating the code and made 2 changes to it
1 I renamed the function to WAValidateZCNew
2 I added the extra parameter 'true' to the line.
so as an example...
$WAFV_Errors .= WAValidateZC(((isset($_POST["postcode"]))?$_POST["postcode"]:"") . "",true,true,true,true,true,13);
becomes
$WAFV_Errors .= WAValidateZCNew(((isset($_POST["postcode"]))?$_POST["postcode"]:"") . "",true,true,true,true,true,true,13);
With these changes in place, my form successfully validated all of the postcode formats