我需要此代码才能检查数字

时间:2015-06-16 00:11:14

标签: javascript

var tel = "123457890";
if (tel.length != 10) {
    console.log("Sorry, incorrect format.");
} else {
    var areaCode = tel.substring(0,3);
    var prefix = tel.substring(3,6);
    var suffix = tel.substring(6,10);
    console.log("(" + areaCode + ") " + prefix + "-" + suffix);
}

关于这一切的一切都适合我,除了我不能让它只检查数字。当我使用建议对其进行故障排除并通过http://repl.it/languages/JavaScript运行时,我会遇到错误消息。

即。当我用“10”数字的字符串输入“w”时,我希望它返回“抱歉,格式不正确”,好像我输入了错误的数字等等。

4 个答案:

答案 0 :(得分:5)

您可以使用正则表达式:

var tel = "123457890";
if (!tel.match(/^\d{10}$/)) {
    console.log("Sorry, incorrect format.");
} else {
    var areaCode = tel.substring(0,3);
    var prefix = tel.substring(3,6);
    var suffix = tel.substring(6,10);
    console.log("(" + areaCode + ") " + prefix + "-" + suffix);
}

答案 1 :(得分:1)

这是一个小提琴:

http://jsfiddle.net/e1qq659g/

这是一个正则表达式模式:

http://regexr.com/3b77b

var regularExpression = /\d{10}/g;
(tel.match(regularExpression)) ? alert("All digits!") : alert("Not Digits!");

这会将表达式与变量tel中的字符串匹配 - 如果匹配,则会提醒“所有数字” - 如果不匹配则会提醒“不是数字!”

答案 2 :(得分:1)

这很有效。如果长度发生变化,它会删除所有字母并检查

var tel = "1234567890";
if (tel.length !== 10 || tel.length !== parseInt(tel).toString().length) {
    document.write("Sorry, incorrect format.");
} else {
    var areaCode = tel.substring(0,3);
    var prefix = tel.substring(3,6);
    var suffix = tel.substring(6,10);
    document.write("(" + areaCode + ") " + prefix + "-" + suffix);
}

答案 3 :(得分:1)

您可以使用RegExp来检查它是否只包含数字并提取每个部分:



var tel = document.getElementById("tel");
var result = document.getElementById("result");

tel.oninput = function(e){
  //var match = tel.value.match(/^(\d{3})(\d{3})(\d{4})$/); // Basic RegExp
  var match = tel.value
    .replace(/\s/g, '') // Removing spaces before RegExp makes it simplier
    .match(/^(\d{3}|\(\d{3}\))(\d{3})\-?(\d{4})$/);
  
  if(match == null) {
    result.innerHTML = "Sorry, incorrect format.";
    return false;
  }
  
  // parseInt is optional
  var areaCode = parseInt(match[1].replace(/[\(\)]/g,'')); // Just need this with the second RegExp
  var prefix = parseInt(match[2]);
  var subfix = parseInt(match[3]); 
  
  result.innerHTML = "Valida input: (" + areaCode + ") " + prefix + "-" + subfix + "\n"
    + "\n\tArea Code: " + areaCode
    + "\n\tPrefix: " + prefix
    + "\n\tSubfix: " + subfix
};

<input type="text" id="tel" placeholder="Enter a valid phone number"/>

<pre id="result"></pre>
&#13;
&#13;
&#13;

通过这种方式,您可以更改RegExp以使其匹配格式化输入,例如(123)456-7890(123) 456-7890(123) 456 - 7890(123)4567890 ..那是当前代码的作用。

如果您评论当前的RegExp并取消注释第一个,它将按照您的要求工作,只接受10位数输入。