2016-02-22 20 views
5

Abbiamo un modulo di accesso che consente di inserire il tuo user_id o il tuo player_tag. Abbiamo un modello con le seguenti regole:Richiedere almeno un carattere alfa

protected $rules = ['player_tag' => 'required|unique|min:3|max:15|regex:/^[a-zA-Z0-9_]+$/']; 

C'è un modo per aggiungere una regola che richiede il campo player_tag di contenere almeno 1 carattere alfabetico (a-zA-Z)?

+0

Quindi, tanto per essere chiari si vuole che contenga almeno un 'a-zA-Z' ma permettono anche' 0-9'? –

+0

@MarkDavidson si è corretto. Quindi, '123' non sarebbe valido ma' a23' o '1b3' o' 23sdf' sarebbe valido –

+1

Ha senso. Non l'ho provato, ma potresti aggiungere un'altra regola regex come 'regex: /^.* [a-zA-Z]. * $/'' Precedente l'espressione regolare che dovrebbe corrispondere quindi passare all'altra regex per il controllo finale. –

risposta

4

Questo potrebbe aiutare:

^(?=.*[a-zA-Z]).+$ 

Ecco un esempio di lavoro: https://regex101.com/r/gD3gR6/2

+1

Pro regex ma hai una parentesi aggiuntiva –

+1

Perché "potrebbe questo aiuto"? Una buona risposta *** avrà sempre una spiegazione di cosa è stato fatto e perché è stato fatto in quel modo, non solo per l'OP ma per i futuri visitatori di SO. –

+1

Questo corrisponderà anche a tutti i caratteri non alfanumerici, quando l'intento (almeno da quello che appare nella domanda) è di consentire solo i caratteri di sottolineatura '_' a parte gli alfanumerici. – Bogdan

0

Prova questo modo

/^\d*[a-zA-Z][a-zA-Z0-9]*$/ 

Spiegazione:

1. 0 o più cifre;

2. Almeno 1 carattere; // questo assicurerà la tua almeno una condizione alpha

3. 0 o 1 carattere alfanumerico;

+1

Perché l'OP deve "provare in questo modo"? Una buona risposta *** avrà sempre una spiegazione di cosa è stato fatto e perché è stato fatto in quel modo, non solo per l'OP ma per i futuri visitatori di SO. –

1

Se ci dovrebbe essere un carattere alfa all'inizio del campo, si può semplicemente estendere la vostra regex per verificare la presenza di uno di questi char all'inizio:

/^[a-zA-Z][a-zA-Z0-9_]*$/ 

Per richiedono almeno un carattere alfabetico, senza specifica posizione, basta usare la seguente espressione regolare:

/^[a-zA-Z0-9_]*[a-zA-Z][a-zA-Z0-9_]*$/ 
Problemi correlati