我有两种形式的正则表达式。其中一个正在工作,另一个则没有。我想念什么?

时间:2019-03-03 21:26:10

标签: javascript html regex forms

我已经测试了两个表达式,并且它们都起作用。现在,遍历所有代码和附件时,我发现邮政编码的正则表达式不起作用。 (一个用于电子邮件地址的地址确实可以。我尝试了一些错误测试,但似乎找不到它为什么不起作用。我已经附上了正则表达式应该从中获取输入信息的表单数据。提交表单时,似乎我们的邮政编码格式分别为字母,数字,字母(然后是可选的空格或破折号),然后是数字,字母,数字。

 <table border="1">
				<tr>
					<td>
						First Name:<input name="fname" required="required" type="text"/><br />
						Last Name:<input name="lname" required="required" type="text" /><br />
						E-mail address:<input name="email" required="required" input type= "text"/><br />
						Postal Code:<input name="postal" required="required" type="text"/><br />
						<input type="submit" value="Join our Mailing List" onclick="return validate(this.form);"></input>
					</td>
				</tr>	
			</table>

有什么建议吗?

	<script> 
			var validate = function(myform){
			var postal = myform.postal;
			var regex = /^([A-Za-z]\d[A-Za-z] -?\d[A-Za-z])\d$/i;
				if (!regex.test(postal.value))
					{
					alert("invalid postal code format");
					return false;
					}					
				return confirm("continue?");
					}	
		</script>
		<script> 
			var validate = function(myform){
			var myemail = myform.email;
			var regex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/i;
				if (!regex.test(myemail.value))
					{
					alert("invalid email format");
					return false;
					}
				return confirm("continue?");
				}
		</script>

2 个答案:

答案 0 :(得分:1)

您的问题来自validate函数的重复定义。

<form>
<table border="1">
  <tr>
    <td>
        First Name:<input name="fname" required="required" type="text"/><br />
        Last Name:<input name="lname" required="required" type="text" /><br />
        E-mail address:<input name="email" required="required" input type= "text"/><br />
        Postal Code:<input name="postal" required="required" type="text"/><br />
        <input type="submit" value="Join our Mailing List" onclick="return validate(this.form);"></input>
    </td>
  </tr>	
</table>
</form>
<script> 
var validate = function(myform) {
var postal = myform.postal;
var regex = /^([A-Za-z]\d[A-Za-z] -?\d[A-Za-z])\d$/i;
if (!regex.test(postal.value)) {
    alert("invalid postal code format");
    return false;
}					

var myemail = myform.email;
var regex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/i;
if (!regex.test(myemail.value)) {
    alert("invalid email format");
    return false;
}
return confirm("continue?");
}
</script>

答案 1 :(得分:0)

您将用于验证表单的函数存储在变量validate中。您将两个不同的函数分配给该变量。一个用于检查邮政编码,另一个用于检查电子邮件地址。

分配第二个功能将覆盖第一个功能的引用。因此,将仅执行电子邮件地址检查。在同一功能中包含两个检查。