我无法用正则表达式解决问题,有什么想法吗?
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的新手。
答案 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