我正在尝试确定用户输入的是电子邮件地址还是电话号码。因此,我想要检查字符串是否以+1或数字开头来确定它是否为电话号码。如果不是任何一个,我就得出结论它是一个电子邮件地址,或者我可以检查它是否以字母开头以确保其是电子邮件地址。如何检查这个呢?如果用正则表达式的话,我很糟糕。
我正在尝试确定用户输入的是电子邮件地址还是电话号码。因此,我想要检查字符串是否以+1或数字开头来确定它是否为电话号码。如果不是任何一个,我就得出结论它是一个电子邮件地址,或者我可以检查它是否以字母开头以确保其是电子邮件地址。如何检查这个呢?如果用正则表达式的话,我很糟糕。
您可以使用正则表达式来实现,但是使用简单的if语句也可以,并且更易读。如果字符串中不存在@
字符并且第一个字符是数字,则可以合理地假设它是电话号码。否则,如果存在@
,则很可能是电子邮件地址。否则,输入很可能无效。if语句如下:
if(yourString.indexOf("@") < 0 && !isNaN(+yourString.charAt(0) || yourString.charAt(0) === "+")) {
// phone number
} else if(yourString.indexOf("@") > 0) {
// email address
} else {
// invalid input
}
@
字符并且是一个数字...电话号码经常包括非数字字符,例如(
和)
或ext 1324
。 - T.J. Crowder@
的存在对我来说已经足够了。 - T.J. Crowderif (!isNaN(parseInt(yourstrung[0], 10))) {
// Is a number
}
[0]
,因为如果字符串以数字开头,parseInt将忽略其他字符。 - Givi只需要按照以下步骤即可:
if ( !isNaN(parseInt(inputString)) ) {
//this starts with either a number, or "+1"
}
parseInt("+1foo")
的结果是 1
。||
是不必要的。此外,.substr(0,1)
永远不可能等于 '+1'
,因为它最多只能是一个字符长。 - T.J. Crowderif(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);
}