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