我存储在一个领域中的一些数据称为published
。我需要使用正则表达式来匹配Y-m-d
的格式。 Y和d可以排除,但是我需要3个月的任何值,例如$months = ['01,'02','03]
。我需要匹配在我的正则表达式的任何的3个月,这是我的正则表达式到目前为止:MySQL的REGEXP Y-M-d与多个月
$regex = '^([0-9]{4}\-'.$months.'\-[0-9]{2})$';
我什么语法是换了个不确定。它会像01|02|03
?我对正则表达式还不是很好。
更新
我发现下面的正则表达式将匹配: ^([0-9]{4}\-{1}(05|01|03){1}\-{1}[0-9]{2})$
不知道,如果它与MySQL兼容,但我要去尝试,看看会发生什么。 http://regexr.com/3c440
反斜杠括号外的破折号前可选的,并且'{1}'基本上是冗余的。你可以用一个看起来像这样的正则表达式:['^([0-9] {4} - (05 | 01 | 03) - [0-9] {2})$'](http:// regexr.com/3c4iq) – FrankerZ
如果你正在检查确切的正则表达式,你仍然应该使用'STR_TO_DATE'。当你提供格式'%Y-%m-%d'并且它不属于那种格式时,它将返回NULL,并且MONTH(NULL)= NULL,所以'NULL'不在'( 1,3,5)' – FrankerZ
@FrankerZ它通过了我所有的测试用例。函数接受内插入或正则表达式的日期数组。 – r3wt