【发布时间】:2015-08-26 11:00:13
【问题描述】:
我目前在 .NET 中使用此 RegEx ^(0[1-9]|1[0-2])/(19|2[0-1])\d{2}$ 来验证具有月份和年份的字段 (12/2000)。
我正在将我的所有 RegEx 验证更改为 JavaScript,但我遇到了这个问题,因为中间有 /,我在转义时遇到了问题。
所以根据 SO 中的其他答案,我尝试了:
RegExp.quote = function (str) {
return (str + '').replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
};
var reDOB = '^(0[1-9]|1[0-2])/(19|2[0-1])\d{2}$'
var re = new RegExp(RegExp.quote(reDOB));
if (!re.test(args.Value)) {
args.IsValid = false;
return;
}
但是,即使有有效数据,验证也会失败。
【问题讨论】:
-
使用正则表达式运算符
//的简单var re = /^(0[1-9]|1[0-2])\/(19|2[0-1])\d{2}$/;怎么样?? -
@sln 这不是一个正则表达式吗?
-
哦,也许吧。它不是将
re编译为正则表达式对象吗? -
有点像变体,可能是
var re = /.../;正则表达式对象,而不是var s = '...';bstr 对象。 -
@Diomedes — 对于个位数月份,删除前导零:
/^([1-9]|1[0-2])\/(19|2[0-1])\d{2}$/
标签: javascript regex validation