I am trying to figure out if a user has entered an email id or a phone number. Therefore i would like to check if the string starts with +1 or a number to determine if it is a phone number . If it is not either i come to the conclusion it is an email or i could check if it starts with a alphabet to be sure. How do i check this . I am horrible with regex if that is the soln .
4 Answers
You can do this with RegEx, but a simple if statement will work as well, and will likely be more readable. If an @ character is not present in the string and the first character is a number, it is reasonable to assume it's a phone number. Otherwise, it's likely an email address, assuming an @ is present. Otherwise, it's likely invalid input. The if statement would look like this:
if(yourString.indexOf("@") < 0 && !isNaN(+yourString.charAt(0) || yourString.charAt(0) === "+")) { // phone number } else if(yourString.indexOf("@") > 0) { // email address } else { // invalid input } 6 Comments
@ character is not present in the string and it is a number..." Phone numbers often include non-numeric characters, like ( and ) or ext 1324.@ would be enough for me.if (!isNaN(parseInt(yourstrung[0], 10))) { // Is a number } 2 Comments
[0], since if string is starting with a number parseInt will simply ignore other chars.+1 44 1234 5678 properly.Just do the following:
if ( !isNaN(parseInt(inputString)) ) { //this starts with either a number, or "+1" } 4 Comments
parseInt("+1foo") is 1. The || is unnecessary. Moreover, .substr(0,1) can never be =='+1' as it will always be one character (at most) long.Might I suggest a slightly different approach using the regex email validation found here?
if(validateEmail(input_str)) { // is an email } else if(!isNaN(parseInt(input_str))) { // not an email and contains a number } else { // is not an email and isn't a number } function validateEmail(email) { var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); } This way you can check a little more thoroughly on what the input actually is, rather than just guessing it's one or the other.
@. If yes then email, otherwise phone number.