dd-mmm-yyyy中的jQuery数据格式检查正则表达式

时间:2015-11-11 18:49:20

标签: javascript jquery regex date-format

我需要检查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

我做错了什么?

3 个答案:

答案 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并且需要查找四位数

第二,几个月左右的括号导致它失败,因为它正在寻找单个字符 JAN OR {{ 1}},FE

最后,它需要是一个不区分大小写的正则表达式

以下正则表达式应该有效:

B

here

答案 2 :(得分:0)

我找到了另一种对我有用的方法:

function ValidateDate(dtValue) {

    var dtRegex = new RegExp(/^\d\d?-\w\w\w-\d\d\d\d/);
    return dtRegex.test(dtValue);
}

谢谢大家的建议