Php – Regex for 2 letters followed by 4 digits

PHPregex

The string should begin with "S2" followed by any 4 digits.

A matching string is "S20165".

I'm trying with the following code, but it always echos OK even when there are 5 or 6 digits.

$string='S20104';
if(preg_match('/S2[0-9]{4}/', $string)){
    echo 'OK';
}
else{
    echo 'NOT OK';
}

Best Answer

You have to use anchors:

/^S2[0-9]{4}$/

^ matches the start of the string and $ matches the end of the string, so this will make sure that you check the complete string and not just a substring.

You can also use \d instead of [0-9]. In PHP, as long as you do not use the 'u' pattern modifier, preg* functions are not Unicode aware, so the two are equivalent.