ik zou graag 1 veld in een form willen valideren volgens een toegelegde input

bijvoorbeeld als volgend

O25M991234

dus 1=> Letter
daarna 2 cijfers
dan terug 1 letter
dan standaard 6 cijfers

hoe kan ik dit doen
ik heb geen flauw benul hoe je dit het best zou kunnen
ik heb iets in het gerne als hieronder maar kan dit nog op een gemakkelijker manier?

<?php

$batch="O25A991234";

$aantalcharc= strlen($batch);
$digit1=substr($batch,-10,1);
$digit23 = substr($batch, -9, 2);
$digit4 = substr($batch, -7, 1);
$digit99=substr($batch,-6, 2);
$digitlast4=substr($batch,-4);

if (($aantalcharc==10)&&(!is_numeric($digit1))&&(is_numeric($digit23))&&(!is_numeric($digit4))&&($digit99==99)&&(is_numeric($digit23))){echo "ok";}else {echo "nok";}


?>
Dit kan middels een reguliere expressie.

<?php
$input = '...';
// i-flag is voor case-insensitive matching
if (preg_match('#^[a-z][0-9]{2}[a-z][0-9]{6}$#i', $input) === 1) {
    echo 'input voldoet';
} else {
    echo 'input voldoet niet';
}
?>


EDIT: $input vergeten in preg_match >_<
ok hoe doe je de check van de 2 x 9 in de laatste 6 digits (991234)
?

Je bedoelt dat daar twee keer het cijfer 9 in voor moet komen?

EDIT: en zijn dat altijd de eerste twee digits? die kun je dan gewoon weglaten uit het patroon, dus die zet je er gewoon "vast" in, dus in plaats van [0-9]{6} doe je 99[0-9]{4}.
inderdaad altijd 2 x 9 op dezelfde plaats

merci
ok zo simpel is dat dus :-)

Reageren