在前端开发中,手机号码验证是常见需求。JavaScript通过正则表达式可高效实现手机号格式校验,以下详细介绍实现方法和最佳实践。
中国大陆手机号为11位数字,目前主要号段包括:
function validatePhone(phone) {
const regex = /^1[3-9]\d{9}$/;
return regex.test(phone);
}
// 使用示例
console.log(validatePhone('13800138000')); // true
console.log(validatePhone('12345678901')); // false
// 精确匹配所有当前有效号段
const preciseRegex = /^1(?:3\d|4[5-9]|5[0-35-9]|6[56]|7[0-8]|8\d|9[0-9])\d{8}$/;
function preciseValidate(phone) {
return preciseRegex.test(phone);
}
function validateChinesePhone(phone) {
// 去除空格等特殊字符
const cleanedPhone = phone.replace(/[\s\-()]/g, '');
// 验证长度和格式
if (!/^1[3-9]\d{9}$/.test(cleanedPhone)) {
return false;
}
// 可根据需要添加更详细的号段验证
return true;
}
// HTML中实时验证
<input type="tel" id="phoneInput" oninput="validatePhoneInput(this)" />
<span id="phoneError" style="color: red; display: none;">手机号格式错误</span>
<script>
function validatePhoneInput(input) {
const errorElement = document.getElementById('phoneError');
const isValid = /^1[3-9]\d{0,10}$/.test(input.value);
if (input.value.length > 0 && !isValid) {
errorElement.style.display = 'inline';
} else {
errorElement.style.display = 'none';
}
}
</script>
通过以上方法,您可以在JavaScript中有效验证手机号码格式。记得结合实际业务需求调整验证逻辑,并提供友好的用户提示。