Javascript:通过正则表达式和if/else语句验证表单字段

Javascript:通过正则表达式和if/else语句验证表单字段,javascript,Javascript,在我的程序中,我在表单中创建了表单和字段。我正在尝试验证字段。为此,我使用了正则表达式,虽然我的正则表达式是正确的,但手机正则表达式不执行。有人能告诉我我是否正确定义了验证的if/else语句吗 代码: 函数validateForm(){ var zip=document.myform.zip; var email=document.myform.email; var phone=document.myform.phone; 如果(email.value==“”){ 提醒(“请输入电子邮件地址

在我的程序中,我在表单中创建了表单和字段。我正在尝试验证字段。为此,我使用了正则表达式,虽然我的正则表达式是正确的,但手机正则表达式不执行。有人能告诉我我是否正确定义了验证的if/else语句吗

代码:

函数validateForm(){
var zip=document.myform.zip;
var email=document.myform.email;
var phone=document.myform.phone;
如果(email.value==“”){
提醒(“请输入电子邮件地址”);
state.focus();
返回false;
}
var regEx2=/^[0-9]{5}(?:-[0-9]{4})$/;
if(zip.value.match(regEx2)){
返回true;
}否则{
window.alert(“请提供一个######或####-##格式的拉链。”);
zip.focus();
返回false;
}
var regEx=/^(?:\(\d{3}\)\s{124;\ d{3}-\d{3}-\d{4}$/;
if(phone.value.match(regEx)){
返回true;
}否则{
窗口提示(“请以(xxx)xxx xxxx格式输入电话号码。”);
phone.focus();
返回false;
}
}

拉链
电话号码
电子邮件
问题就在这里-

 if (zip.value.match(regEx2)) {
    return true;
  } else {
    window.alert("Please provide a zip in the ##### or #####-#### format.");
    zip.focus();
    return false;
  }
无论zip是否有效,您都将从此点返回。之后的代码块将不会执行

我建议不要在每个成功的if块中返回,因为代码执行将从该点返回,而不验证其他字段

       function validateForm() {

            var valid = true;
            var zip = document.myform.zip;
            var email = document.myform.email;
            var phone = document.myform.phone; 

            if (email.value == "")
            {
                window.alert("Please enter email Address.");
                email.focus();
                valid = false;
            }   

            var regEx2 = \^[0-9]{5}(?:-[0-9]{4})?$\;

            if(!zip.value.match(regEx2))
            {
                window.alert( "Please provide a zip in the ##### or #####-#### format." );
                zip.focus() ;
                valid = false;
            }  

            var regEx = \^(?:\(\d{3}\)\s|\d{3}-)\d{3}-\d{4}$\;

            if(!phone.value.match(regEx)) 
            {  
                window.alert("Please enter Telephone number in (xxx) xxx-xxxx format.");
                phone.focus();
                valid = false;  
            }  

            return valid;
       } 
如果您真的希望仅在前面的所有字段都有效(作为当前代码)时验证一个字段,则此操作有效-

         function validateForm() {

            var zip = document.myform.zip;
            var email = document.myform.email;
            var phone = document.myform.phone; 

            if (email.value == "")
            {
                window.alert("Please enter email Address.");
                email.focus();
                return false;
            }   

            var regEx2 = \^[0-9]{5}(?:-[0-9]{4})?$\;

            if(!zip.value.match(regEx2))
            {
                window.alert( "Please provide a zip in the ##### or #####-#### format." );
                zip.focus() ;
                return false;
            }  

            var regEx = \^(?:\(\d{3}\)\s|\d{3}-)\d{3}-\d{4}$\;

            if(!phone.value.match(regEx)) 
            {  
                window.alert("Please enter Telephone number in (xxx) xxx-xxxx format.");
                phone.focus();
                return false;
            }  

            return true;
         } 
这是完整的脚本-

<!DOCTYPE html>
<html>
<head>
    <title>NumerValidation</title>
</head>
<body>
        <form name="myform" id="myform" action="" onsubmit="return validateForm();" method="post">
        <table cellspacing="2" cellpadding="2" border="0">
        <tr>
                <td align="right">Zip</td>
                <td><input type="text" name="zip" maxlength="15" size="28"/></td>
            </tr>
            <tr>
                <td align="right">Telephone number</td>
                <td><input type="text" name="phone" size="28" placeholder="(555) 555-5555"/></td>
            </tr>
            <tr>
                <td align="right"> EMail </td>
                <td> <input type="text" name="email" size="28" /></td>
            </tr>
<tr>
                <td align="right"></td>
                <td><input type="submit" value="Submit"/> </td>
            </tr>
        </table>    
    </form>
<script>

         function validateForm() {

            var zip = document.myform.zip;
            var email = document.myform.email;
            var phone = document.myform.phone; 

            if (email.value == "")
            {
                window.alert("Please enter email Address.");
                email.focus();
                return false;
            }   

            var regEx2 = /^[0-9]{5}(?:-[0-9]{4})?$/;

            if(!zip.value.match(regEx2))
            {
                window.alert( "Please provide a zip in the ##### or #####-#### format." );
                zip.focus() ;
                return false;
            }  

            var regEx = /^(?:\(\d{3}\)\s|\d{3}-)\d{3}-\d{4}$/;

            if(!phone.value.match(regEx)) 
            {  
                window.alert("Please enter Telephone number in (xxx) xxx-xxxx format.");
                phone.focus();
                return false;
            }  

            return true;
         } 

        </script>

</body>
</html>

数字验证
拉链
电话号码
电子邮件
函数validateForm(){
var zip=document.myform.zip;
var email=document.myform.email;
var phone=document.myform.phone;
如果(email.value==“”)
{
提醒(“请输入电子邮件地址”);
email.focus();
返回false;
}   
var regEx2=/^[0-9]{5}(?:-[0-9]{4})$/;
如果(!zip.value.match(regEx2))
{
window.alert(“请提供一个######或####-##格式的拉链。”);
zip.focus();
返回false;
}  
var regEx=/^(?:\(\d{3}\)\s{124;\ d{3}-\d{3}-\d{4}$/;
如果(!phone.value.match(regEx))
{  
窗口提示(“请以(xxx)xxx xxxx格式输入电话号码。”);
phone.focus();
返回false;
}  
返回true;
} 
问题就在这里-

 if (zip.value.match(regEx2)) {
    return true;
  } else {
    window.alert("Please provide a zip in the ##### or #####-#### format.");
    zip.focus();
    return false;
  }
无论zip是否有效,您都将从此点返回。之后的代码块将不会执行

我建议不要在每个成功的if块中返回,因为代码执行将从该点返回,而不验证其他字段

       function validateForm() {

            var valid = true;
            var zip = document.myform.zip;
            var email = document.myform.email;
            var phone = document.myform.phone; 

            if (email.value == "")
            {
                window.alert("Please enter email Address.");
                email.focus();
                valid = false;
            }   

            var regEx2 = \^[0-9]{5}(?:-[0-9]{4})?$\;

            if(!zip.value.match(regEx2))
            {
                window.alert( "Please provide a zip in the ##### or #####-#### format." );
                zip.focus() ;
                valid = false;
            }  

            var regEx = \^(?:\(\d{3}\)\s|\d{3}-)\d{3}-\d{4}$\;

            if(!phone.value.match(regEx)) 
            {  
                window.alert("Please enter Telephone number in (xxx) xxx-xxxx format.");
                phone.focus();
                valid = false;  
            }  

            return valid;
       } 
如果您真的希望仅在前面的所有字段都有效(作为当前代码)时验证一个字段,则此操作有效-

         function validateForm() {

            var zip = document.myform.zip;
            var email = document.myform.email;
            var phone = document.myform.phone; 

            if (email.value == "")
            {
                window.alert("Please enter email Address.");
                email.focus();
                return false;
            }   

            var regEx2 = \^[0-9]{5}(?:-[0-9]{4})?$\;

            if(!zip.value.match(regEx2))
            {
                window.alert( "Please provide a zip in the ##### or #####-#### format." );
                zip.focus() ;
                return false;
            }  

            var regEx = \^(?:\(\d{3}\)\s|\d{3}-)\d{3}-\d{4}$\;

            if(!phone.value.match(regEx)) 
            {  
                window.alert("Please enter Telephone number in (xxx) xxx-xxxx format.");
                phone.focus();
                return false;
            }  

            return true;
         } 
这是完整的脚本-

<!DOCTYPE html>
<html>
<head>
    <title>NumerValidation</title>
</head>
<body>
        <form name="myform" id="myform" action="" onsubmit="return validateForm();" method="post">
        <table cellspacing="2" cellpadding="2" border="0">
        <tr>
                <td align="right">Zip</td>
                <td><input type="text" name="zip" maxlength="15" size="28"/></td>
            </tr>
            <tr>
                <td align="right">Telephone number</td>
                <td><input type="text" name="phone" size="28" placeholder="(555) 555-5555"/></td>
            </tr>
            <tr>
                <td align="right"> EMail </td>
                <td> <input type="text" name="email" size="28" /></td>
            </tr>
<tr>
                <td align="right"></td>
                <td><input type="submit" value="Submit"/> </td>
            </tr>
        </table>    
    </form>
<script>

         function validateForm() {

            var zip = document.myform.zip;
            var email = document.myform.email;
            var phone = document.myform.phone; 

            if (email.value == "")
            {
                window.alert("Please enter email Address.");
                email.focus();
                return false;
            }   

            var regEx2 = /^[0-9]{5}(?:-[0-9]{4})?$/;

            if(!zip.value.match(regEx2))
            {
                window.alert( "Please provide a zip in the ##### or #####-#### format." );
                zip.focus() ;
                return false;
            }  

            var regEx = /^(?:\(\d{3}\)\s|\d{3}-)\d{3}-\d{4}$/;

            if(!phone.value.match(regEx)) 
            {  
                window.alert("Please enter Telephone number in (xxx) xxx-xxxx format.");
                phone.focus();
                return false;
            }  

            return true;
         } 

        </script>

</body>
</html>

数字验证
拉链
电话号码
电子邮件
函数validateForm(){
var zip=document.myform.zip;
var email=document.myform.email;
var phone=document.myform.phone;
如果(email.value==“”)
{
提醒(“请输入电子邮件地址”);
email.focus();
返回false;
}   
var regEx2=/^[0-9]{5}(?:-[0-9]{4})$/;
如果(!zip.value.match(regEx2))
{
window.alert(“请提供一个######或####-##格式的拉链。”);
zip.focus();
返回false;
}  
var regEx=/^(?:\(\d{3}\)\s{124;\ d{3}-\d{3}-\d{4}$/;
如果(!phone.value.match(regEx))
{  
窗口提示(“请以(xxx)xxx xxxx格式输入电话号码。”);
phone.focus();
返回false;
}  
返回true;
} 

另一方面,即使第一次验证失败,您的代码也会进行不必要的正则表达式检查,在正则表达式匹配时不会中断执行。我的意思是,除非OP的目的是在电子邮件中显示三个警报,zip和phone的值都是invalid@shakhawat提交时,应显示任何空白字段或错误值的警报消息button@shakhawat我的代码没有检查电话字段。我的正则表达式是正确的,但我仍然不知道why@shakhawat我是否只需要添加一次return true?如果需要,我可以添加任意多个?另一方面,即使第一次验证失败,您的代码也会进行不必要的正则表达式检查,因为在正则表达式匹配时不会中断执行。我的意思是,除非OP的目的是在电子邮件中显示三个警报,zip和phone的值都是invalid@shakhawat提交时,应显示任何空白字段或错误值的警报消息button@shakhawat我的代码没有检查电话字段。我的正则表达式是正确的,但我仍然不知道why@shakhawat我是否只需要添加一次return true?如果我想的话,我可以加多少?