I need a regex that will match the US phone in a slightly different manner. Actually, on my page i have textbox for taking input, there i had place regular expression validator and the regex to validate the zip code in 999-999-9999
. Till here everything was fine. Later on we added MaskedEditor extender to avoid manually adding - in between the codes of phone number. Also the ClearMaskOnLostFocus is s开发者_如何学Goet to false. So every time we have ___-___-____
in our textbox. And my validator is now always validating its against invalid input.
So finally i would like say, i need a regex that will match if my phone is a valid US phone and also passes ___-___-____
, instead of the two it will break..
[Existing Regex]
^[0-9]{3}[\-]{1}[0-9]{3}[\-]{1}[0-9]{4}$
In Javascript - here:
/^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
It came from google... http://www.zparacha.com/phone_number_regex/
Here it is part by part:
/^ = match must start with - no chars before
\(? = optional left brace
(\d{3}) = 3 digits
\)? = optional right brace
[- ]? = optional hyphen or space
(\d{3}) = 3 digits
[- ]? = optional hyphen or space
(\d{4}) = 4 digits
$/ = match must end here - no chars after
Just use the following:
(<your current regex>)|(___-___-____)
Try to look at libphonenumber for inspiration or use. It has most stuff you can need regarding this.
PhoneFormat.com has a javascript library that will take whatever number you throw at it, in whatever format you have, and properly format it. If you pass ___-___-____
or 999-999-9999
it will handle it just fine.
精彩评论