这是javascript,但是PHP中几乎相同的regex也失败了,所以我不认为它是特定于语言的
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我到底错过了什么?
发布于 2008-11-03 07:32:28
我认为您的非捕获块应该是(?:19|20)而不是(:19|20)。
发布于 2008-11-03 08:22:45
正确;您的正则表达式实际上可以使用?:。
当使用前缀时,?表示您将对捕获做一些事情。要么不捕获块(:),捕获前面的(=),后面的(<=)等等。
https://stackoverflow.com/questions/258062
复制相似问题