2
我需要一个正则表达式来验证下面的代码, 后面的代码我说明了期望的结果。这个表达式的正则表达式'PI-1234-265K'
<?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
您已经指定了在第一个“ - ”之前有两个数字或两个字母。在你的一个代码中,有四个。无论如何,有些东西会跳出来。 – christopher 2013-02-27 13:51:21
已经有了一个很好的答案,所以不需要跳进去。但是,不用[A-Za-z ...],你可以提供/ i作为修饰符以匹配不区分大小写,或者使用更短的[\ w \ d] {2}来代替。完整模式可能如下所示:'preg_match('#^ [\ w \ d] {2} - [\ w \ d] {4} - [\ w \ d] {2,} $#i' PI-1234-265K')'(在这种情况下,i修饰符是多余的) – ExternalUse 2013-02-27 14:03:40
@ExternalUse,你用'i'修饰符正确,但是'\ w'类也包含下划线,如果这不是想要'\ w'将是错误的选择。另一方面,'\ w'也包含数字'\ d',所以不需要'[\ w \ d]'。 – stema 2013-02-27 14:08:55