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
D Troviamo gratuitamente influencer per collaborazioni Annunci servizi di Social Media Marketing 0
MarcoGrazia Categorie per settore merceologico di Google SEO e Posizionamento 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
matteoraggi Local seo per un B&B di Forli SEO e Posizionamento 3
D Ical: Sto realizzando un gestionale per i miei appartamenti di casa vacanza PHP 0
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1
P Aiuto per rendere un Bot Telegram Privato PHP 1
V Query per una somma PHP 2
A Tabella con bottoni per aggiornamento record PHP 6
G Consigli SEO per scrittura e struttura pagine SEO e Posizionamento 6
P Passare solo alcuni parametri a script per CSV PHP 0
A Consiglio per creazione sito web CMS (Content Management System) 0
A Regex per isolare link interni con rel noopener PHP 0
L form immagini per il database PHP 0
S CREAZIONE DI SITO PER CORSI DI FORMAZIONE WordPress 2
I [cerchiamo][retribuito] Grafico/a per stickers Offerte e Richieste di Lavoro e/o Collaborazione 0
R Cercarsi programmatore per GDR PBC Offerte e Richieste di Lavoro e/o Collaborazione 0
L Sessione e array per utenti PHP 0
A Sottoquery con group by per mese MySQL 0
G Appicazione HTML per inserimento dai in Database Access Microsoft HTML e CSS 0
V [Cerco] Socio e Sviluppatore per App PlacesFinder Offerte e Richieste di Lavoro e/o Collaborazione 0
M user agent per il download di api PHP 0
B Stringa sql per ricerca su più campi Database 1
Cosina Upload multiplo con invio allegati per email PHP 0
P Editor per la realizzazione di siti HTML e CSS 2

Discussioni simili