我有一个检查我的电子邮件和日期字段的脚本。 他们仍然会接受一个糟糕的约会。我究竟做错了什么?我是regex的新手。
<script type="text/javascript">
$('#btn-submit').click(function() {
$('.error').hide();
var hasError = false;
var payError = false;
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var ccdate = /^((0[1-9])|(1[0-2]))\/((2013)|(20[1-4][0-9]))$/;
//验证电子邮件
var emailaddressVal = $("#mail").val();
if(emailaddressVal == '') {
$("#errors").after('<span class="error">Please enter your email address.</span>');
hasError = true;
}
else if(!emailReg.test(emailaddressVal)) {
$("#errors").after('<span class="error">Enter a valid email address.</span>');
hasError = true;
}
//这会检查是否选择了下拉选项以显示结算字段。
if ( ($("#selection").val() == '') ) {
$("#errors").after('<span class="error">Please select an option.</span>');
hasError = true;
}
if ( ($("#selection").val() == 'charge') ) {
//validate cctype
if ( ($("#cctype").val() == '') ) {
$("#errors").after('<span class="error">Please select a credit card type.</span>');
payError = true;
}
//验证ccdate
var ccdate = $("#ccdate").val();
if ( ccdate == '') {
$("#errors").after('<span class="error">Please enter a date</span>');
payError = true;
}
else if(!date.test(ccdate)) {
$("#errors").after('<span class="error">Enter a valid date.</span>');
payError = true;
}
if(payError == true) { return false; }
}
if(hasError == true) { return false; }
});
我的表单有几个输入字段。我有一个下拉列表,会显示包含所有结算字段的结算表。 我试图让它只接受MM / YYYY作为有效的信用卡日期。 这似乎接受任何字符串。
谢谢
答案 0 :(得分:4)
var ccdate = $("#ccdate").val();
在这里,你将从这里覆盖正则表达式:
var ccdate = /^((0[1-9])|(1[0-2]))\/((2013)|(20[1-4][0-9]))$/;
将正则表达式的名称更改为date
。此外,2013
和20[1-4][0-9]
不需要成组。