2

次のコードを検証するには、正規表現が必要です。目的の結果を示したコードの背後にあります。

<?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 です。

4

1 に答える 1

3

正規表現を固定する必要があります

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

^文字列の先頭に一致しています

$文字列の末尾に一致しています

これを行わないと、部分一致が発生します。2番目のケース「PIS2-12FG-265K」では S2-12FG-265K と一致するため、最初から試合が開始されません。

于 2013-02-27T13:51:03.417 に答える