YYYY-AA-GG biçiminde tarihleri ​​maç Düzenli İfade

6 Cevap php

Ben YYYY-MM-DD formatında tarih arar PHP düzenli bir ifade var

Ne var ise: [\d]{4}-[\d]{2}-[\d]{2}

Ben tarih test preg_match kullanıyorum, sorun 2009-11-10 çalışır, ama 2009-11-1033434 olarak iyi çalışıyor olmasıdır. Ben regex yaptık beri nasıl ben bunu doğru noktada durur emin olun yok, bir süre oldu? I /([\d]{4}-[\d]{2}-[\d]{2}){1}/ yapıyor denedim ama aynı sonucu verir.

Herhangi bir yardım büyük mutluluk duyacağız.

6 Cevap

Ne gerek çapalar, özellikle ^ ve $ olduğunu. Eski dize başlangıcını maçlar, ikinci karşılaşmaları sona erdi.

Ben yapacak diğer nokta [] gereksiz olduğunu. \d karakter aralıkların dışında anlamını korur.

Yani regex bu gibi görünmelidir: /^\d{4}-\d{2}-\d{2}$/.

Nasıl tarih sona bekliyorsunuz?

Eğer bir uç-of-line, daha sonra $ hile yapmak gerekir aşağıdaki.

Eğer bir rakam olmayan bir karakter tarafından, daha sonra bir negatif assertion (?!\d) aynı şekilde çalışacak aşağıdaki.

you're probably wanting to put anchors on the expression. i.e.

^[\d]{4}-[\d]{2}-[\d]{2}$

şapka ve dolar işareti unutmayın.

[\d]{4}-[\d]{2}-[\d]{2}?

soru işareti "açgözlü olmayan" anlamına nerede

Muhtemelen (senin motor, bunları destekleyen php / gebelik / pcre yok varsayarak) öncesinde iddialar bakmak istiyorum

Iddialar (veya pozitif iddialar) sen "demek için izin ve X tarafından takip edilmelidir, ancak X) maçın bir parçası olmamalıdır ileriye bakmak. Aşağıdaki sözdizimini deneyin

\d{4}-\d{2}-\d{2}(?=[^0-9])

Iddiası bu parçasıdır

(?=[^0-9])

O "Benim regex sonra, bir sonraki karakteri bir sayı olamaz" diyor

Size / ihtiyacı istediğini elde etmezse, girdi ve çalışmıyor PHP kodu örneği gönderebilir. Bu iki öğe bu tür sorunları hata ayıklama o derece yararlı olabilir.

Sen ifade başında ve sonunda hem bir '^' ve '$' sembolü koyarak deneyebilirsiniz:

/^[\d]{4}-[\d]{2}-[\d]{2}$/

sırasıyla başlangıç ​​ve dizenin sonunu maç hangi.