jQuery dd-mmm-yyyy 中的数据格式用正则表达式检查
jQuery Data Format in dd-mmm-yyyy check with regular expression
我需要检查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
我做错了什么?
你的正则表达式中有几个错误
首先,(d{4})
需要是 (\d{4})
因为它当前正在寻找 4 d
并且需要寻找四位数
其次,月份周围的括号导致它在寻找 单个字符 J
、A
或 [=16 时失败=] 或 F
、E
、B
等
最后,它需要是不区分大小写的正则表达式
以下正则表达式应该有效:
/^(([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}))$/i
如所见here
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>
我找到了另一种适合我的方法:
function ValidateDate(dtValue) {
var dtRegex = new RegExp(/^\d\d?-\w\w\w-\d\d\d\d/);
return dtRegex.test(dtValue);
}
谢谢大家的建议
我需要检查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
我做错了什么?
你的正则表达式中有几个错误
首先,(d{4})
需要是 (\d{4})
因为它当前正在寻找 4 d
并且需要寻找四位数
其次,月份周围的括号导致它在寻找 单个字符 J
、A
或 [=16 时失败=] 或 F
、E
、B
等
最后,它需要是不区分大小写的正则表达式
以下正则表达式应该有效:
/^(([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}))$/i
如所见here
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>
我找到了另一种适合我的方法:
function ValidateDate(dtValue) {
var dtRegex = new RegExp(/^\d\d?-\w\w\w-\d\d\d\d/);
return dtRegex.test(dtValue);
}
谢谢大家的建议