我存儲在一個領域中的一些數據稱爲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