正则表达式'PI-1234-265K'

时间:2013-02-27 13:49:22

标签: php regex

我需要一个正则表达式来验证以下代码, 我在代码背后说出了理想的结果。

<?php
    $codes[] = 'PI-1234-265K'; // true
    $codes[] = 'PIS2-12FG-265K'; // false
    $codes[] = 'PI-1234FG-265K'; // false
    $codes[] = 'PI-1234-2'; // false
    $codes[] = 'PI-1234-265K12313'; // true
    foreach($codes as $code){
        var_dump(preg_match('/[a-zA-Z0-9]{2}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{2,}/', $code));
        echo '<br/>';
    }
?>

目前第一部分没有得到正确检查,它返回11001但所需的结果是10001。

1 个答案:

答案 0 :(得分:3)

您需要anchor正则表达式

var_dump(preg_match('/^[a-zA-Z0-9]{2}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{2,}$/', $code));

^匹配字符串的开头

$匹配字符串

的结尾

如果您不这样做,您将获得部分匹配。第二种情况下的手段“PIS2-12FG-265K”匹配 S2-12FG-265K ,因此您的匹配不会从头开始。