我需要检查dd-mm-yyyy
格式的数据格式。
我使用以下内容:
if (ValidateDate() == false) {
alert("Wrong Date Format");
return false;
}
function ValidateDate() {
var dtValue = $('#txtEnteredStartDate').val();
var dtRegex = new RegExp("^(([1-9]|0[1-9]|1[0-9]|2[1-9]|3[0-1])[-]([JAN|FEB|MAR|APR|MAY|JUN|JULY|AUG|SEP|OCT|NOV|DEC])[-](d{4}))$");
return dtRegex.test(dtValue);
}
但是当我在字段中输入dd-mmm-yyyy
时,例如19-Nov-2015
,我收到错误Wrong date format
我做错了什么?
答案 0 :(得分:2)
PhilVarg的正则表达式是正确的,虽然在RegExp
中应用它,但您需要\\
d
。
此外,您可以将([1-9]|0[1-9]|1[0-9]|2[1-9]|3[0-1])
重新分解为([0]?[1-9]|[1-2]\\d|3[0-1])
,这意味着选项0后跟1到9或1,2后跟数字,或3后跟0或1。
1最后一点,[]
周围不需要-
,并且传递i
(忽略大小写)RegExp接受它作为第二个参数。
工作示例: -
function ValidateDate() {
var dtValue = $('#txtEnteredStartDate').val();
var dtRegex = new RegExp("^([0]?[1-9]|[1-2]\\d|3[0-1])-(JAN|FEB|MAR|APR|MAY|JUN|JULY|AUG|SEP|OCT|NOV|DEC)-[1-2]\\d{3}$", 'i');
return dtRegex.test(dtValue);
}
$('.check').click(function() {
if (ValidateDate() == false) {
$('.result').html("Wrong Date Format");
} else {
$('.result').html("Right Date Format");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="txtEnteredStartDate" value="19-Nov-2015" />
<input type="button" class="check" value="check" />
<span class="result"></span>
答案 1 :(得分:0)
你的正则表达式中有几个错误
首先,(d{4})
需要(\d{4})
,因为它目前正在寻找4个d
并且需要查找四位数
第二,几个月左右的括号导致它失败,因为它正在寻找单个字符 J
,A
或N
OR {{ 1}},F
,E
等
最后,它需要是一个不区分大小写的正则表达式
以下正则表达式应该有效:
B
见here
答案 2 :(得分:0)
我找到了另一种对我有用的方法:
function ValidateDate(dtValue) {
var dtRegex = new RegExp(/^\d\d?-\w\w\w-\d\d\d\d/);
return dtRegex.test(dtValue);
}
谢谢大家的建议