I have a function that I intend to use for validating zip codes and I wanted to know if my way could be made better.
function zipcode (inputtxt)
{
var zipcode = /^\+?([0-9]{2})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/;
if((inputtxt.value.match(zipcode))
{
return true;
}
else
{
alert("message");
return false;
}
}
2 Answers 2
Changes I would make: (but not necessary)
- Make sure
inputtext
has a value, and isn't undefined, so it wouldn't throw an error in yourif
statement. - Replace the
if
statement withreturn
instead. (This is mostly to minimize the code a bit, something your minifier won't do for you).
Except for that, it seems ok (I'm not looking into the logic of the regex, since I'm not sure how a zipcode should be parsed).
function zipcode (inputtxt)
{
if (!inputtxt || !inputtxt.value) return false;
var zipcode = /^\+?([0-9]{2})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/;
return ((inputtxt.value.match(zipcode));
}
Um. There is verry little code, so one can not say much about your code. It does, what it should, I assume.
One thing, I see is, that you are alerting a message, which has nothing to do with the validation. So if you are looking for SRP - the separation of concerns, you take the alert out and put it elsewhere.
Of course you could shrink the whole thing down to
function checkZipcode(zip) {
if(!zip) throw new TypeError("zip is not defined");
return /^\+?([0-9]{2})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/.test(zip);
}
done. But whether this is an improvement or not is open.