我正在尝试使用javascript验证电话号码,而我却陷入了这个部分
区号(999中的前3个数字)不能全为零(0)
我知道要制作哪种格式的代码(比如xxx-xxx-xxxx)但是如何确保前0不是全零呢?
感谢任何帮助,谢谢!!
答案 0 :(得分:2)
您可以通过多种方式执行此操作,以下是使用不同方法的一些示例。
使用substr
var num = "000-xxx-xxxx";
var first_three = num.substr(0, 3);
if (first_three === "000") {
console.log("Number starts with 000");
}
使用拆分
var num = "000-xxx-xxxx";
var first_three = num.split("-")[0];
if (first_three === "000") {
console.log("Number starts with 000");
}
使用正则表达式
var num = "000-xxx-xxxx";
if (/^000/.test(num)) {
console.log("Number starts with 000");
}
答案 1 :(得分:0)
您可以使用parseInt
,它会忽略字符串中第一个非数字字符后的所有内容:
var phone1 = '000-555-4444';
var phone2 = '555-555-5555';
function isValidAreaCode(phoneNumber) {
return parseInt(phoneNumber, 10) > 0;
}
console.log(phone1, 'valid?', isValidAreaCode(phone1));
console.log(phone2, 'valid?', isValidAreaCode(phone2));
答案 2 :(得分:0)
您可以使用class
或typename
答案 3 :(得分:0)
假设您正在使用正则表达式测试美国区号
/^[2-9][0-8][0-9]/
来测试它们应该有效。 According to
this。
Areacodes可以以2到9之间的数字开头,第二个数字可以是任意数字
除9以外的数字,最后一个数字可以是任意数字。
function hasValidAreaCode(num) {
var stripped = num.replace(/\D/g, ''); // remove any no-numeric characters
return /^[2-9][0-8][0-9]/.test(stripped);
}
互动示例:
function hasValidAreaCode(num) {
var stripped = num.replace(/\D/g, ''); // remove any no-numeric characters
return /^[2-9][0-8][0-9]/.test(stripped);
}
var elPhonenumber = document.getElementById('phonenumber');
elPhonenumber.addEventListener('keyup', function (event) {
var v = elPhonenumber.value;
if (v.replace(/\D/g, '').length > 2) {
var valid = hasValidAreaCode(v);
if (valid) {
elPhonenumber.classList.add('valid');
elPhonenumber.classList.remove('invalid');
} else {
elPhonenumber.classList.remove('valid');
elPhonenumber.classList.add('invalid');
}
} else {
elPhonenumber.classList.remove('valid', 'invalid');
}
});

.valid, .invalid {
color: #000;
}
.valid {
color: green;
}
.invalid {
color: red;
}

<label for="phonenumber">Please enter a phonenumber</label> <input id="phonenumber">
&#13;