Espressione Regolare per verifica stringa

andreto

Utente Attivo
5 Dic 2012
88
0
0
Ciao a tutti,
sto scrivendo un'espressione regolare che deve rispettare queste caratteristiche:

SI: cifre (0-9), lettere (a-z) e trattino (-).
NO: iniziare o terminare con il trattino (-).

io ho scritto:

Codice:
preg_match ('/^[^\-][a-z0-9\-]+[^\-]$/', $sito)

però ho un problema che non riesco a risolvere.

Se scrivo una stringa con meno di 3 caratteri va in errore.
Se al primo posto o all'ultimo scrivo caratteri diversi da quelli consentiti mi accetta la stringa

Io vorrei anche scrivendo solo "a" o solo "1" che non vada in errore.
Allo stesso tempo se scrivo ad esempio "£1£" deve andare in errore.

Evidentemente l'espressione si aspetta 3 caratteri e nel primo e l'ultimo posto si aspetta comunque un carattere l'importante che non sia un trattino.

Spero in un vostro aiuto, grazie.

Andrea
 

marty89

Nuovo Utente
22 Ott 2011
9
0
1
Ciao, prova con questa espressione regolare:
PHP:
preg_match ('/^[^-][a-z0-9-]+[^-]$/', $sito);
:byebye:
 

andreto

Utente Attivo
5 Dic 2012
88
0
0
Grazie marty89 ma anche così non funziona.
Ho l'impressione che per ogni classe [ ] lui si aspetta un carattere.
Quindi vuole almeno 3 caratteri.

La mia stringa dovrebbe risultare ok anche con un solo carattere, l'importante che non inizi e non termini con il trattino.

I caratteri ammessi sono:
lettere minuscole
numeri
trattino (non al primo o ultimo posto)

Ad esempio:

--- falso
-1- falso
1-1 vero
--b falso
5-- falso
1 vero
a5 vero
A falso

abcdhr7d8- falso
-jchf66okfn falso
jfndfk---df73478 vero
ajdhfoicncdAkdfhjdf falso

Ragazzi per favore, non riesco a risolverla.
 

andreto

Utente Attivo
5 Dic 2012
88
0
0
Forse mi sto avvicinando ma ancora c'è un errore.

Codice:
preg_match('/^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$/', $sito)

unico problema che vuole almeno 2 caratteri. :dipser:
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ciao, cosi dovrebbe andare
PHP:
preg_match('/^[a-z0-9]{1}[a-z0-9-]*(?<=[a-z0-9])$/', $sito);
 

andreto

Utente Attivo
5 Dic 2012
88
0
0
Sicuramente userò il tuo metodo, ma mentre mi rispondevi provavo altre soluzioni e questa sembra funzionare correttamente però è un po' più lunga:

Codice:
preg_match('/^[a-z0-9]$/', $sito) | preg_match('/^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$/', $sito)

infatti avrei voluto non ripetere il preg_match ma fare circa così:

Codice:
preg_match('/^[a-z0-9]$ | ^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$/', $sito)

ovviamente non funziona!

C'è un modo per inserire un or tra le due? ^[a-z0-9]$ or ^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Sicuramente userò il tuo metodo, ma mentre mi rispondevi provavo altre soluzioni e questa sembra funzionare correttamente però è un po' più lunga:

Codice:
preg_match('/^[a-z0-9]$/', $sito) | preg_match('/^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$/', $sito)

infatti avrei voluto non ripetere il preg_match ma fare circa così:

Codice:
preg_match('/^[a-z0-9]$ | ^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$/', $sito)

ovviamente non funziona!

C'è un modo per inserire un or tra le due? ^[a-z0-9]$ or ^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$
Prova applicandolo cosi
PHP:
preg_match('/^([a-z0-9]|[a-z0-9]+[a-z0-9-]*[a-z0-9]+)$/', $sito);
 
Ultima modifica:

andreto

Utente Attivo
5 Dic 2012
88
0
0
Funziona :beer:

sei un Genio!

Quale useresti delle due che mi hai consigliato?
 

NicoChaluna

Nuovo Utente
18 Apr 2013
8
0
0
Ciao :D

Ho un problema in lettura con l'uso del preg_match.

se ho ad esempio la stringa ' 2. cane,' in che modo posso leggere solo la parola cane con la preg?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ciao :D

Ho un problema in lettura con l'uso del preg_match.

se ho ad esempio la stringa ' 2. cane,' in che modo posso leggere solo la parola cane con la preg?
Se ti serve solo per una parola, puoi fare cosi
PHP:
$st = '.2 cane';
echo preg_filter('/[^a-z]/','',$st);
 
Discussioni simili
Autore Titolo Forum Risposte Data
JackIlPazzo Espressione regolare per effettuare match con URI PHP 1
F espressione regolare per valore null PHP 8
A Espressione regolare per verifica password PHP 3
JellyBelly Espressione Regolare per controllo Orario Javascript 2
D Select con espressione regolare PHP 4
C L'espressione regolare non funziona Javascript 0
I espressione regolare Javascript 1
J espressione regolare PHP 2
D Espressione regolare e redirect Apache 0
S Password espressione regolare PHP 3
S Espressione Regolare PHP 7
emanuelevt espressione regolare PHP 9
borgo italia espressione regolare con numeri PHP 2
borgo italia espressione regolare PHP 4
Z Espressione regolare PHP 1
M Espressione regolare con eregi PHP 1
F espressione regolare e IE 6 Javascript 4
G [MS Access] Funzione ARROTONDA non definita nell'espressione MS Access 1
M Valutazione espressione postfissa C/C++ 0
A Creare una classe espressione Java 1
Nik Espressione regolari max e min caratteri Javascript 12
D Scrivere un'espressione condizionale in Access Visual Basic 0
L espressione aritmetica PHP 5
asevenx regolare larghezza e opacità del testo div HTML e CSS 2
V Regolare il volume Flash 1
felino Lubuntu 18.04 Requisiti per applicazione console .net core 7.0 Linux e Software 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
E Aiuto per query PHP 8
E Il punto di riferimento italiano per Trailers cavalli Discussioni Varie 0
F CERCO Servizi SEO di Qualità per Agenzie di Servizi SEO e Posizionamento 3
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
R Plugin di base per WordPress WordPress 0
D [COMPRO/CERCO] GUEST POST o scambio link per sito di Spiritualità ed Esoterismo. Vendere e Acquistare pubblicita' online 0
L Suggerimento Pagespeed per non vedenti HTML e CSS 0
M Analisi sito per pulire codice inutile HTML e CSS 1
Paolo69 Risolto reCAPTCHA v2 per ASP Classic ASP 0
M Hosting VPS per server di gioco Minecraft Hosting 0
N Grazie per il benvenuto Presentati al Forum 0
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
R Filtri e plugin per photoshop Photoshop 0
AkTaRuS DIsabilitare il tasto destro tranne che per code e pre Javascript 1
0 [Retribuito] Cercasi programmatore per GdR PbC Offerte e Richieste di Lavoro e/o Collaborazione 0
A Adempimenti per magazine on line Leggi, Normative e Fisco 0
R Recupero di permalink di un sito che è stato eliminato per errore WordPress 5
I aiuto urgente per thunderbird Posta Elettronica 0
A Web master per semplice sito web Offerte e Richieste di Lavoro e/o Collaborazione 2
M [Cerco][Gratuito] Artista/designer per creazione grafica gioco di società Offerte e Richieste di Lavoro e/o Collaborazione 0
M Un saluto per cominciare Presentati al Forum 1
N MAX() + ADD_DATE - per update su Mysql MySQL 0

Discussioni simili