文字列をチェックしたい。56401 には 2 つの連続する数字 (5,6) があり、逆方向のチェックも (6,5) あり、false または true を返す必要があります。
/\d{4}/
これを改善する方法について何か考えはありますか?
正規表現を使用するのではなく、次のようなものをお勧めします。
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'
、連続したペアとしてカウントされます)。この関数を数値だけで動作させたい場合は、この関数に渡す前に文字列を検証することをお勧めします (正規表現はそのための良い解決策です)。