/ / PHP - Regex: ho bisogno di aiuto per costruire regex secondo queste regole - php, regex

PHP - Regex: ho bisogno di aiuto per costruire regex secondo queste regole - php, regex

Ho bisogno di aiuto per creare un'espressione regolare per preg_match secondo queste regole:

  1. solo la prima e l'ultima lettera / cifra.
  2. spazio vuoto non consentito
  3. char può essere solo - lettera / cifra / "-" / "_" / "."

Esempi legali:

  1. b.t612_rt
  2. Carreggiata-essere
  3. rut7565

Esempio non legale:

  1. .btr78; btr78- (caratteri primi / ultimi consentiti)
  2. inizio fine; fine stella; (qualsiasi spazio vuoto)
  3. 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 № 1

Prova 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:

  1. Prima e ultima lettera / cifra:

    ^[a-z0-9]
    

    e

    [a-z0-9]$
    
  2. spazio vuoto non permesso (nulla è necessario, dato che stiamo facendo una partita positiva e non permettiamo alcun spazio bianco da nessuna parte):

  3. Solo lettere / cifre / - / _ /.

    [a-z0-9_.-]*
    
  4. 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 ...