Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Xiaomi Pad 8 Pro adotta il potente Snapdragon 8 Elite all'interno di un corpo con spessore di soli 5,75 mm e pannello LCD a 144Hz flicker-free, per un tablet che può essere utilizzato con accessori dedicati di altissima qualità. Fra le caratteristiche esclusive, soprattutto per chi intende usarlo con la tastiera ufficiale, c'è la modalità Workstation di HyperOS 3, che trasforma Android in un sistema operativo con interfaccia a finestre
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
Nelle ultime settimane abbiamo provato tre delle proposte top di gamma di NZXT nelle categorie case, dissipatori e ventole. Rispettivamente, parliamo dell'H9 Flow RGB+, Kraken Elite 420 e F140X. Si tratta, chiaramente, di prodotti di fascia alta che si rivolgono agli utenti DIY che desiderano il massimo per la propria build. Tuttavia, mentre i primi due dispositivi mantengono questa direzione, le ventole purtroppo hanno mostrato qualche tallone d'Achille di troppo
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-12-2010, 17:37   #1
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
[PHP] Espressioni regolari help

Suggerirei di postare gentilmente un tutorial sulle espressioni regolari in php tramite preg_match nella sezione Corsi, dato che se ne ha bisogno continuamente ma il loro utilizzo non è per niente banale
E non ho trovato guide a prova di novizio in giro.
Parlo per l'interesse di tutti ovviamente.

A parte questo, il mio problema è che non riesco a scrivere una semplice espr. reg. per matchare una data in formato gg-mm-aaaa o gg/mm/aaaa

ho provato così, ma non matcha le date corrette

Codice:
if(preg_match("%([0-9]{2})/([0-9]{2})/([0-9]{4}) | ([0-9]{2})\-([0-9]{2})\-([0-9]{4})%",$data) == 0)
 print "Data scorretta";
else 
 print "ok";
Se invece tolgo il "|" e la parte a destra , matcha correttamente le date nel formato gg/mm/aaaa.
Come faccio ad aggiungere un OR con il formato gg-mm-aaaa ??

Ogni aiuto è apprezzato
grz
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 18:06   #2
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
l'ex regolare va messa tra /

Poi prova questa che è un pò più sofisticata (verifica anche se i numeri inseriti sono accettabili per il loro significato, nel limite del possibile)

Codice:
if(preg_match("/([0-2]*[0-9]|3[0-1])[-\/](0*[0-9]|1[0-2])[-\/]([0-9]{4})/", $data) == 0){
	print "Data scorretta";
}
else { 
	print "ok";
}
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 18:32   #3
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
l'ex regolare va messa tra /

Poi prova questa che è un pò più sofisticata (verifica anche se i numeri inseriti sono accettabili per il loro significato, nel limite del possibile)

Codice:
if(preg_match("/([0-2]*[0-9]|3[0-1])[-\/](0*[0-9]|1[0-2])[-\/]([0-9]{4})/", $data) == 0){
	print "Data scorretta";
}
else { 
	print "ok";
}
mmh, non mi convince, se gli passo $data="623fg12-12-1587gds323" il match passa,

poi sul fatto dei delimitatori, non è obbligatorio usare "/", v. qui
http://us.php.net/manual/en/regexp.r...delimiters.php
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 19:35   #4
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Ovvio che passa, quella stringa contiene una data valida.

Se la tua richiesta è "voglio matchare una stringa che sia unicamente una data" allora è diverso, basta comunque mettere ^ prima e $ dopo:

Codice:
^([0-2]*[0-9]|3[0-1])[-\/](0*[0-9]|1[0-2])[-\/]([0-9]{4})$
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 19:38   #5
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da GordonFreeman Guarda i messaggi
..

poi sul fatto dei delimitatori, non è obbligatorio usare "/", v. qui
http://us.php.net/manual/en/regexp.r...delimiters.php
Hai ragione, non funziona perchè hai sbagliato proprio la regex.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 20:08   #6
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Ovvio che passa, quella stringa contiene una data valida.

Se la tua richiesta è "voglio matchare una stringa che sia unicamente una data" allora è diverso, basta comunque mettere ^ prima e $ dopo:

Codice:
^([0-2]*[0-9]|3[0-1])[-\/](0*[0-9]|1[0-2])[-\/]([0-9]{4})$
Si la richiesta è quella

Scusa la mia noobbità in materia, ma [0-2]* non vuol dire che sono ammesse da 1 a infinite volte delle cifre 0,1,2?
Quindi anche queste che non sono date passerebbero:
000000000000000000000000000-01-2000
1111111111111111111111111111/01/2000

idem per 0*
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 20:22   #7
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da GordonFreeman Guarda i messaggi
Si la richiesta è quella

Scusa la mia noobbità in materia, ma [0-2]* non vuol dire che sono ammesse da 1 a infinite volte delle cifre 0,1,2?
Quindi anche queste che non sono date passerebbero:
000000000000000000000000000-01-2000
1111111111111111111111111111/01/2000

idem per 0*
Si hai ragione scusami, sostituisci tutti i * con {0,1}. Inoltre se vuoi puoi pensare a come migliorarla ancora, ad esempio ora accetta anche 00 come valore, in teoria dovrebbe accettare solo 01 o 1, robe così
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 20:38   #8
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Si hai ragione scusami, sostituisci tutti i * con {0,1}. Inoltre se vuoi puoi pensare a come migliorarla ancora, ad esempio ora accetta anche 00 come valore, in teoria dovrebbe accettare solo 01 o 1, robe così
Comincio a ingranare..

poi qualche domanda:

$ serve a dire "tutta la stringa deve matchare il pattern, non solo una sottostringa"?

a cosa serve ^ ?

se nella tua espressione avessi sostituito [-\/] con [\/-] sarebbe stato lo stesso?

Scusa per le domande, se vuoi mettimi il link a un tutorial per noob come me, così me lo leggo
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 20:43   #9
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da GordonFreeman Guarda i messaggi
Comincio a ingranare..

poi qualche domanda:

$ serve a dire "tutta la stringa deve matchare il pattern, non solo una sottostringa"?
Vuol dire che quello che lo precede deve trovarsi alla fine della stringa
Esempio con abc$:
xyzabc -> true
xyzabcd -> false

Quote:
a cosa serve ^ ?
Vuol dire che quello che lo segue deve trovarsi all'inizio delle stringa
Esempio con ^abc;
abcd -> true
xyzabc -> false

Quindi ^abc$ vuol dire che abc deve essere sia l'inizio che la fine di una stringa, cioè la stringa stessa.

Quote:
se nella tua espressione avessi sostituito [-\/] con [\/-] sarebbe stato lo stesso?
Stessa cosa si, le parentesi quadre matchano ogni carattere che vi è contenuto dentro, è l'ordine non è importante perchè non fa il match di una stringa, ma di ogni carattere.
Esempio [abc] matcha qualsiasi cosa che sia una 'a', una 'b' o una 'c'.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 21:08   #10
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Vuol dire che quello che lo precede deve trovarsi alla fine della stringa
Esempio con abc$:
xyzabc -> true
xyzabcd -> false


Vuol dire che quello che lo segue deve trovarsi all'inizio delle stringa
Esempio con ^abc;
abcd -> true
xyzabc -> false

Quindi ^abc$ vuol dire che abc deve essere sia l'inizio che la fine di una stringa, cioè la stringa stessa.


Stessa cosa si, le parentesi quadre matchano ogni carattere che vi è contenuto dentro, è l'ordine non è importante perchè non fa il match di una stringa, ma di ogni carattere.
Esempio [abc] matcha qualsiasi cosa che sia una 'a', una 'b' o una 'c'.
ok dai grazie

poi ci sarebbe da dire che l'espressione matcha queste che non sono corrette:

01-01/2000
01/01-2000

perchè devono essere entrambe - o entrambe / , quindi :

Codice:
^([0-2]{1,1}[0-9]|3[0-1])[-](0{1,1}[0-9]|1[0-2])[-]([0-9]{4}) | 
  ([0-2]{1,1}[0-9]|3[0-1])[\/](0{1,1}[0-9]|1[0-2])[\/]([0-9]{4})$
a parte il fatto che i giorni non dovrebbero valere 00 , come dicevi prima..
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 21:10   #11
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Non servono le [] se ci metti un solo carattere, e scritta così non va bene perchè non controlli che sia una stringa unica, inoltre {1,1} non ha un senso pratico, puoi anche eliminarlo.

Ultima modifica di MEMon : 01-12-2010 alle 21:13.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 22:29   #12
GordonFreeman
Member
 
Iscritto dal: Apr 2005
Messaggi: 296
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Non servono le [] se ci metti un solo carattere, e scritta così non va bene perchè non controlli che sia una stringa unica, inoltre {1,1} non ha un senso pratico, puoi anche eliminarlo.
Codice:
^([0-2][0-9]|3[0-1])-(0[0-9]|1[0-2])-([0-9]{4})$ | 
^([0-2][0-9]|3[0-1])[\/](0[0-9]|1[0-2])[\/]([0-9]{4})$
la accendiamo?
GordonFreeman è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2010, 22:29   #13
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da GordonFreeman Guarda i messaggi
Codice:
^([0-2][0-9]|3[0-1])-(0[0-9]|1[0-2])-([0-9]{4})$ | 
^([0-2][0-9]|3[0-1])[\/](0[0-9]|1[0-2])[\/]([0-9]{4})$
la accendiamo?
Pare di si
MEMon è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Unitree H1: il robot umanoide vicino al ...
GPU esterne: PCI-SIG porta le prestazion...
Per Lenovo i giocatori sono ricchi: Legi...
Polaroid lancia la nuova stampante Hi-Pr...
Da Kyndryl un gemello digitale per il di...
La Cina si prepara a una nuova missione ...
Climatizzatore Inverter A++ con Wi-Fi a ...
NZXT Flex, lo 'scandalo' del PC gaming a...
Robot lavavetri in offerta su Amazon: EC...
Attenti a questo update fake di Windows ...
NIO chiede la standardizzazione di batte...
Da 80 mesi-uomo a poche ore: l'AI cambia...
In 2 settimane senza social il cervello ...
Amazon top 7 di oggi: 2 portatili intere...
SteamGPT trapela dal client Steam: ecco ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v