2014-08-29 15 views

risposta

7

Prova questo regex

\b[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z\b 

Ci:

\b - limite di parola, di controllare ciò che per esempio '92014-08-29T06: 44: 03Z' non è valido

[0-9]{n} - numero della corrispondenza con n cifre

Se una stringa deve contenere solo la data e nessun altro carattere, quindi utilizzare:

^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ 
0

risposta dei cerchioni funzionerà sicuramente, ecco alcuni esempi in più.

Un po 'più brevità:

\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z 

Un po' più di precisione:

\d{4}-[01]{1}\d{1}-[0-3]{1}\d{1}T[0-2]{1}\d{1}:[0-6]{1}\d{1}:[0-6]{1}\d{1}Z 

Naturalmente, è possibile scrivere espressioni più avanzati che sono più efficienti di questo utilizzando avanti e indietro riferimento per davvero assicurarsi di avere una corrispondenza convalidata al 100% per combinazioni consentite, ecc ...

+0

ha funzionato ..grazie gmiley e cerchi –

2

La seguente espressione regolare accetta una stringa di tempo ISO-8601 UTC che garantisce:

formato: AAAA-MM-GGThh: mm: ssZ
esempio: 2016-07-08T12: 30: 00Z

dove:
YYYY = 0000 a 9999
MM = 01 a 12
DD = 01 a 31
hh = 00 a 23
mm = 00 a 59
ss = 00 a 59

\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2]\d|3[0-1])T(?:[0-1]\d|2[0-3]):[0-5]\d:[0-5]\dZ 

È possibile provarlo qui: https://regex101.com/r/jE4cE4/1

Problemi correlati