On Mit, Jun 20, 2001 at 09:47:53 +0200, Christoph Maurer wrote:
Am Die, 19 Jun 2001, schrieb Jan Theofel:
Jan Trippler wrote:
$is_num = ( $variable =~ /^\d*[.,]?\d+$/ );
berücksichtigt auch Punkt und Komma.
Wie waere es mit $is_zahl = ($variable * 1) == $variable
Das beruecksichtigt alle Moeglichkeiten, auch komplexe Zahlen. :-)
Folgendes habe ich zufällig gestern im Perl Cookbook gefunden [...] warn "not a decimal number" unless /^-?(?:\d+(?:\.\d*)?|\.\d+))?$/;
Diese Variante kam schon im anderen Teilthread (der Thread ist leider durch ungeschickte Subject-Reformatierung zerrupft worden :-() Was hier noch zu berücksichtigen war: - Zahlen, die mit einem + beginnen, werden nicht erfasst (kann durch /^[+-]? usw. gelöst werden) - Das Komma als Dezimaltrenner wird nicht akzeptiert - hier müsste man entweder mit einer Variablen arbeiten oder vorher umwandeln (Umwandeln ist sicher am besten, wenn man das weiter in Perl verarbeiten will, da Perl nur den Punkt akzeptiert) Jan