Ho bisogno di aiuto per creare un'espressione regolare per preg_match
secondo queste regole:
- solo la prima e l'ultima lettera / cifra.
- spazio vuoto non consentito
- char può essere solo - lettera / cifra / "-" / "_" / "."
Esempi legali:
- b.t612_rt
- Carreggiata-essere
- rut7565
Esempio non legale:
- .btr78; btr78- (caratteri primi / ultimi consentiti)
- inizio fine; fine stella; (qualsiasi spazio vuoto)
- tr $ essere; tr * rt; tr / tr ... (caratteri non consentiti)
Modifica: rimuovo 4 regole con neigbor chars "_" "-" "."
mi aiuti per favore.
Grazie
risposte:
3 per risposta № 1Prova questa espressione regolare:
^[A-Za-z0-9]+([-_.][A-Za-z0-9]+)*$
Ciò corrisponde a qualsiasi sequenza che inizia con almeno una lettera o cifra (^[A-Za-z0-9]+
) che può essere seguito da zero o più sequenze di uno di -
, _
, o .
([-_.]
) che deve essere seguito da almeno una lettera o cifra ([A-Za-z0-9]+
).
2 per risposta № 2
Prova questo:
^[p{L}p{N}][p{L}p{N}_.-]*[p{L}p{N}]$
In PHP:
if (preg_match(
"%^ # start of string
[p{L}p{N}] # letter or digit
[p{L}p{N}_.-]* # any number of letters/digits/-_.
[p{L}p{N}] # letter or digit
$ # end of the string.
%xu",
$subject)) {
# Successful match
} else {
# Match attempt failed
}
Lunghezza minima della stringa: due caratteri.
1 per risposta № 3
Questo sembra funzionare bene per gli esempi forniti: $patt = "/^[a-zA-Z0-9]+([-._][a-zA-Z0-9]+)*$/";
1 per risposta № 4
Bene, per ciascuna delle tue regole:
Prima e ultima lettera / cifra:
^[a-z0-9]
e
[a-z0-9]$
spazio vuoto non permesso (nulla è necessario, dato che stiamo facendo una partita positiva e non permettiamo alcun spazio bianco da nessuna parte):
Solo lettere / cifre / - / _ /.
[a-z0-9_.-]*
Nessun simbolo vicino:
(?!.*[_.-][_.-])
Quindi, tutti insieme:
/^[a-z0-9](?!.*[_.-][_.-])[a-z0-9_.-]*[a-z0-9]$/i
Ma con tutte le regex, ci sono più soluzioni, quindi provalo ...
Modifica: per la tua modifica:
/^[a-z0-9][a-z0-9_.-]*[a-z0-9]$/i
Basta rimuovere la sezione per la regola che si desidera modificare / remoto. è così facile ...