如何在javascript中检查字符串是否以数字开头

如何在javascript中检查字符串是否以数字开头,javascript,jquery,string,Javascript,Jquery,String,我想知道用户是否输入了电子邮件id或电话号码。因此,我想检查字符串是否以+1或数字开头,以确定它是否是电话号码。如果不是,要么我得出结论,那是一封电子邮件,要么我可以检查它是否以字母表开头。我怎么检查这个。如果这是解决方案,我对正则表达式很反感。只需执行以下操作: if (!isNaN(parseInt(yourstrung[0], 10))) { // Is a number } if ( !isNaN(parseInt(inputString)) ) { //this star

我想知道用户是否输入了电子邮件id或电话号码。因此,我想检查字符串是否以+1或数字开头,以确定它是否是电话号码。如果不是,要么我得出结论,那是一封电子邮件,要么我可以检查它是否以字母表开头。我怎么检查这个。如果这是解决方案,我对正则表达式很反感。

只需执行以下操作:

if (!isNaN(parseInt(yourstrung[0], 10))) {
  // Is a number
}
if ( !isNaN(parseInt(inputString)) ) {
    //this starts with either a number, or "+1"
}

您可以使用RegEx实现这一点,但是一个简单的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
}
if(yourString.indexOf(“@”)<0&&!isNaN(+yourString.charAt(0)| | yourString.charAt(0)==“+”){
//电话号码
}else if(yourString.indexOf(“@”)>0){
//电子邮件地址
}否则{
//无效输入
}

我是否可以建议使用所发现的regex电子邮件验证使用稍微不同的方法

if(验证邮件(输入){
//这是一封电子邮件
}如果(!isNaN(parseInt(input_str)),则为else{
//不是电子邮件,包含数字
}否则{
//不是电子邮件,也不是号码
}
功能验证邮件(电子邮件){
变量re=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\'+\”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.];
返回重新测试(电子邮件);
}

通过这种方式,您可以更彻底地检查输入的实际内容,而不仅仅是猜测它是一个或另一个。

为什么它们被放在同一个字段中?如果您知道它总是一个或另一个,那么请检查它是否包含
@
。如果是,则发送电子邮件,否则发送电话号码。仅供参考,
parseInt(“+1foo”)
1
|
是不必要的。此外,
.substr(0,1)
永远不能是
='+1'
,因为它将始终是一个字符(最多)长。这不会检测+1大小写,因为您只分析字符串的第一个字符。@ty。啊,对不起,在T.J.的建议后,我忘记了更改。您忘记了基数。“如果字符串中没有
@
字符,而它是一个数字…”电话号码通常包括非数字字符,如
分机1324
。这是最适合我的答案,因为它解决了我当前的问题。谢谢,没错,@T.J.Crowder。电话号码输入验证库(或很长的正则表达式)可能是解决此问题的最佳选择。不过,我想现在我们可以只检查电话号码的第一个字符。验证电话号码几乎总是一件傻事。我会把它们分开输入。如果它们必须是一个输入(因为某个高层是twit),对我来说只要存在
@
就足够了。因为你只解析第一个字符,这不处理OP的电话号码以“+1”开头的情况。你可以省略
[0]
,因为如果字符串以数字开头,parseInt将忽略其他字符。如果您想正确处理
+14412345678
,则可以和应该。
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);
}