这是javascript,但是几乎完全相同的正则表达式在PHP中也失败了,所以我认为它不是特定于语言的
var r = new RegExp( "^(:19|20)?[0-9][0-9]" // optional 19/20 start followed by 2 numbers + "-" // a hyphen + "(:0?[1-9]|1[0-2])" // optional 0 followed by 1-9, or 10, 11, 12 + "-" // a hyphen + "(:3[01]|[12][0-9]|0?[1-9])$" // you get the idea. ); r.test("2008-07-01"); // == false
我究竟错过了什么?
我认为你的非捕获块应该是例如(?:19|20)
而不是(:19|20)