Mi chiedevo se avrei potuto ottenere un'espressione regolare che corrisponderà a una stringa che ha solo caratteri alfabetici e solo quella.
àun carattere alfabetico in base alla definizione? Che lingua stai usando?
Mi chiedevo se avrei potuto ottenere un'espressione regolare che corrisponderà a una stringa che ha solo caratteri alfabetici e solo quella.
àun carattere alfabetico in base alla definizione? Che lingua stai usando?
Risposte:
È possibile utilizzare una di queste 2 varianti:
/^[A-Z]+$/i
/^[A-Za-z]+$/
per abbinare una stringa di input di alfabeti ASCII.
[A-Za-z] corrisponderà a tutti gli alfabeti (sia minuscoli che maiuscoli).^e $farà in modo che solo questi alfabeti vengano abbinati.Codice:
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Produzione:
array(0) {
}
Il test case è per il commento di OP che vuole abbinare solo se nell'input sono presenti 1 o più alfabeti. Come puoi vedere nel test case che corrisponde non è riuscito perché c'era ^nella stringa di input abcAbc^Xyz.
Nota: la risposta sopra corrisponde solo agli alfabeti ASCII e non ai caratteri Unicode. Se si desidera abbinare le lettere Unicode, utilizzare:
/^\p{L}+$/u
Qui, \p{L}corrisponde a qualsiasi tipo di lettera da qualsiasi lingua
\w is shorthand for A-Za-z- non proprio, \wè una scorciatoia per[a-zA-Z0-9_]
Se devi includere caratteri alfabetici non ASCII e se il tuo sapore regex supporta Unicode, allora
\A\pL+\z
sarebbe la regex corretta.
Alcuni motori regex non supportano questa sintassi Unicode ma consentono alla \wstenografia alfanumerica di corrispondere anche a caratteri non ASCII. In tal caso, puoi ottenere tutti gli alfabeti sottraendo cifre e caratteri di sottolineatura in \wquesto modo:
\A[^\W\d_]+\z
\Acorrisponde all'inizio della stringa, \zalla fine della stringa ( ^e $corrisponde anche all'inizio / alla fine delle righe in alcune lingue come Ruby o se sono impostate alcune opzioni di regex).
Questo corrisponderà a uno o più caratteri alfabetici:
/^[a-z]+$/
Puoi renderlo insensibile alle maiuscole usando:
/^[a-z]+$/i
o:
/^[a-zA-Z]+$/
In Ruby e in altre lingue che supportano le classi di caratteri POSIX nelle espressioni tra parentesi, puoi fare semplicemente:
/\A[[:alpha:]]+\z/i
Che corrisponderà ai caratteri alfa in tutte le lingue alfabetiche Unicode. Vai tranquillo.
Maggiori informazioni: http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html
[^[:alpha]].
[a-zA-Z] dovrebbe farlo bene.
Puoi fare riferimento al cheat sheet .