如何使用 javascript 验证电话号码

How do I validate a phone number with javascript?

本文关键字:电话号码 验证 javascript 何使用      更新时间:2023-09-26

比我聪明一点的人能帮我做这个功能吗?其目的是验证表单中的文本输入,即仅接受 0-9、破折号和点的电话号码字段。HTML 调用该函数很好。

function validateFeedback() {
    var phone = document.getElementById("phone");
    var validNumber = "0123456789.-";
    for (i = 0; i < phone.length; i++); {
        if (validNumber.indexOf(phone.charAt(i)) == -1); {
            alert("You have entered an invalid phone number");
            return false;
        }
    }
    return true;
}

非常感谢任何帮助。

正则表达式应该有助于;)

很抱歉我没有尝试运行此代码,但它应该没问题。

function validateFeedback(){
    var phone = document.getElementById("phone");
    var RE = /^['d'.'-]+$/;
    if(!RE.test(phone.value))
    {
        alert("You have entered an invalid phone number");
        return false;
    }
    return true;
}

尝试如下:

function validateFeedback()
    {
    var phone = document.getElementById("phone");
    var validNumber = "0123456789.-";

    for(i = 0; i < phone.length; i++) {
            if(validNumber.indexOf(phone.charAt(i)) == -1) {
                    alert("You have entered an invalid phone number");
                    return false;
                }
            }
        return true;
    }

; 不合时宜...

我认为

你应该使用正则表达式来做到这一点。有些东西链接这个:

function validateFeedback() {
  var phone = document.getElementById("phone").value;
  var reg = new RegExp("[0-9 .-]*"); 
  return reg.test(phone);
}

如果文本输入在表单中,则可以使用表单 id 和元素 id 更直接地引用它:

var phone = document.<formId>.phone;

您要测试的是元素的值,因此您需要:

var phone = document.<formName>.phone.value;

由于该函数可能是从表单上的提交侦听器调用的,因此您可以使用以下命令提高效率:

<form onsubmit="return validateFeedback(this);" ...>

在我看来,电话号码只有数字,没有"-"或"."字符,因此您应该只测试数字 0-9。

所以函数可以是这样的:

function validateFeedback(form) {
  var phoneValue = form.phone.value;
  // Use a regular expression to validate the value
  // is only digits
  if (/'D/.test(phoneValue) {
    // value contains non-digit characters
    // advise user of error then
    return false;
  }
}

您可能也想测试长度是否合理,但请注意,不同地方的电话号码长度不同,具体取决于地区或国家/地区代码的位置和使用,以及该号码是用于手机、固定电话还是其他号码。

我更喜欢对这样的事情使用正则表达式。请查看我的函数修改版本,该版本应该可以在没有任何框架的情况下在所有主要浏览器中运行。

function validateFeedback() {
    // Get input
    var phone = document.getElementById("phone"),
        // Remove whitespaces from input start and end
        phone = (phone || '').replace(/^'s+|'s+$/g, ''),
        // Defined valid charset as regular expression
        validNumber = "/^[0123456789.-]+$/";
    // Just in case the input was empty
    if (phone.length == 0) {
        // This depends on your application - is an empty number also correct?
        // If not, just change this to "return false;"
        return true;
    }
    // Test phone string against the regular expression
    if (phone.match(validNumber)) {
        return true;
    }
    // Some invalid symbols are used
    return false;
}

试试这个

function validateFeedback(value) {
    var length = value.length;
    chk1="1234567890()-+ ";
    for(i=0;i<length;i++) {
        ch1=value.charAt(i);
        rtn1=chk1.indexOf(ch1);
        if(rtn1==-1)
            return false;
        }
        return true;
    }
function phonenumber(inputtxt)
{
  var phoneno = /^'d{10}$/;
  if((inputtxt.value.match(phoneno))
        {
      return true;
        }
      else
        {
        alert("message");
        return false;
        }
}