jupp. das fällt unter völliges over-validating. kommt eigentlich immer beim validieren von telefonnummern, trifft hier aber auch zu.
1. jeder benutzer, der diese regel absichtlich 'umgehen' will (z.b. hat kein telefon, oder will seine handynummer einfach nicht angeben), schafft es, dummy-daten einzutragen, egal wie scharf du die regeln setzt.
2. je schwieriger es wird, ein formular zu benutzen, desto seltener wird es benutzt, was in den allerallerwenigsten fällen im sinne des autors war.
3. es geht viel schneller, einen eventuell vorkommenden 'ungewünschten' eintrag manuell zu löschen oder zu ignorieren, als eine regel zu entwerfen, die alle gängigen 'gültigen' einträge validiert. du landest irgendwann bei statistik und heuristik.
4. für 99% der fälle reicht es aus, simple algorithmen zu verwenden, wie 'feld ist leer' - das ist meist auf 'in der eile vergessen, was einzutragen' zurückzuführen.
/my 57 cents dazu.
falls du immer noch validieren willst:
eine simple methode, etwas über reguläre ausdrücke zu lernen und nicht zu verzweifeln:
PHP-Code:
<?php
function test_nameIsValid() {
$valuesToPass = array(
'Franz, Mayer', 'Fritz, Hallo', 'Önar Elefant', 'Dr. Mario',
);
$valuesToFail = array(
'', 'dong', 'arsch','000','-'
);
$failed = false;
foreach($valuesToPass as $v) {
if(nameIsValid($v) !== true) {
echo ' ' . $v . ' wurde fälschlicherweise als fehlerhaft markiert.
';
$failed = true;
}
}
foreach($valuesToFail as $v) {
if(nameIsValid($v) !== false) {
echo ' ' . $v . ' wurde fälschlicherweise als ok markiert.
';
}
}
echo ($failed) ? ' test fehlerhaft ' : 'test ok';
echo '
';
return (!$failed);
}
function nameIsValid($name) {
return false; // hier den regulären ausdruck einfügen.
}
test_nameIsValid();
?>
... und jetzt so lange nameIsValid() abändern, bzw. den regulären ausdruck darin, bis du nur noch 'test ok' zu sehen bekommst.
ist meiner meinung nach die schnellste und robusteste methode, ein komplexes problem wie reguläre ausdrücke in den griff zu bekommen, ohne wahnsinnig zu werden und nach jeder änderung wieder ein formular anwerfen zu müssen, möglicherweise mit mehreren feldern, die auch noch immer wieder eingetragen sein müssen, damit die spezielle methode überhaupt angeschmissen wird.