2010-04-15 9 views

risposta

22
$value =~ /^[a-zA-Z0-9.]+$/ 
+2

Non dovrebbe essere '\ .'? – cmptrgeekken

+0

$ value = ~ /^[a-zA-Z0-9.]+$/ funziona per me, quale sarebbe \. modificare? – goe

+22

@cmptrgeeken: i punti non sono speciali all'interno delle classi di caratteri. '[.]' –

-1

Guarda perl regular expressions

\w Match "word" character (alphanumeric plus "_") 


$value =~ /^[\w+.]\.*$/; 
+0

'\ w' è alfanumerico più" _ ". –

+0

Concordato con @eugene. Devi stare attento con \ w a causa di quei fastidiosi caratteri '_'. parte dell'interpretazione numerica di Perl come separatore di migliaia e forse a causa di nomi di variabili ma non usati nel testo normale. –

2

Non dimenticare l'opzione /i e la classe \d carattere.

$value =~ /^[a-z\d.]+$/i 
1

Se non si desidera consentire tutti i caratteri diversi da quelli ammessi nella classe di caratteri, non si dovrebbe usare la fine $ di ancoraggio line dal che permette un ritorno a capo finale. Utilizzare l'ancoraggio assoluto di fine stringa \z invece:

$value =~ /^[a-z0-9.]+\z/i; 
Problemi correlati