正则表达式测试YYYY-MM-DD错误

时间:2013-12-20 13:09:27

标签: javascript regex

我无法用正则表达式解决问题,有什么想法吗?

var pattern = new RegExp("/(19|20)\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])/")
// regexp for test date format like YYYY-MM-DD,
data = "2013-12-20"; // Date
console.log(pattern.test(data)); //returns false

抱歉这个愚蠢的问题,但我是regexp的新手。

2 个答案:

答案 0 :(得分:5)

您同时使用new RegExp(...)和文字/pattern/语法,请删除/new RegExp,这样就可以了。目前,您还在 String 的开头和结尾测试/


刚刚测试过,如果你把它写成文字(删除new RegExp和引号),它就可以了。删除斜杠是行不通的,因为你没有对反斜杠进行转义,所以一旦它被解释,它们实际上并不在 String 中。

使用上述提示的每个例子:

var using_constructor = new RegExp('^(?:19|20)\\d\\d-(?:0[1-9]|1[012])-(?:0[1-9]|[12][0-9]|3[01])$');
var using_literal = /^(?:19|20)\d\d-(?:0[1-9]|1[012])-(?:0[1-9]|[12][0-9]|3[01])$/;

答案 1 :(得分:1)

试试这个:

var pattern = /(19|20)\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])/ // regexp for test date format like YYYY-MM-DD,
data = "2013-12-20"; // Date
console.log(pattern.test(data)); //returns true