我需要一个正则表达式来验证以下代码, 我在代码背后说出了理想的结果。
<?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。
答案 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 ,因此您的匹配不会从头开始。