2010-04-15 3 views

Antwort

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

Sollte das nicht "\." Sein? – cmptrgeekken

+0

$ value = ~ /^[a-zA-Z0-9.]+$/ funktioniert für mich, was \. Veränderung? – goe

+22

@cmptrgeeken: Punkte sind keine speziellen internen Zeichenklassen. '[.]' –

-1

Blick auf perl regular expressions

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


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

'\ w' ist alphanumerisch plus" _ ". –

+0

Einverstanden mit @eugene. Du musst vorsichtig sein mit \ w wegen dieser nervigen '_' Zeichen Teil von Perls Zahleninterpretation als Tausendertrennzeichen und möglicherweise wegen Variablennamen, die aber im normalen Text nicht verwendet werden. –

2

die /i Option und die \d Zeichenklasse nicht Vergessen.

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

Wenn Sie wollen keine andere Zeichen als diejenigen, die in der Zeichenklasse erlaubt zu ermöglichen, können Sie die $ Zeilenende Anker nicht verwenden sollten, da diese eine neue Zeile nachlauf ermöglicht. Verwenden Sie stattdessen den absoluten End-of-String-Anker \z:

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