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”时,我希望它返回“抱歉,格式不正确”,好像我输入了错误的数字等等。
答案 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)
这是一个小提琴:
这是一个正则表达式模式:
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;
通过这种方式,您可以更改RegExp
以使其匹配格式化输入,例如(123)456-7890
,(123) 456-7890
,(123) 456 - 7890
,(123)4567890
..那是当前代码的作用。
如果您评论当前的RegExp
并取消注释第一个,它将按照您的要求工作,只接受10位数输入。