0

文字列をチェックしたい。56401 には 2 つの連続する数字 (5,6) があり、逆方向のチェックも (6,5) あり、false または true を返す必要があります。

/\d{4}/

これを改善する方法について何か考えはありますか?

4

1 に答える 1

0

正規表現を使用するのではなく、次のようなものをお勧めします。

function has_consecutive_chars($input) {
    $chars = str_split($input);
    for ($i = 1; $i < count($chars); $i++)
    {
        if (abs($chars[$i] - $chars[$i-1]) == 1)
        {
           return true;
        }
    }
    return false;
}

has_consecutive_chars('56401'); // true
has_consecutive_chars('72674'); // true
has_consecutive_chars('53794'); // false

これは非数値でも機能することに注意してください (たとえば'ab'、連続したペアとしてカウントされます)。この関数を数値だけで動作させたい場合は、この関数に渡す前に文字列を検証することをお勧めします (正規表現はそのための良い解決策です)。

于 2013-09-19T15:24:40.957 に答える