文字列がコロンで区切られた 3 つの 2 桁の数字に一致するかどうかをテストするのを手伝ってくれませんか? 例えば:
12:13:14
preg_match を使用する必要があることは理解していますが、方法がわかりません
できれば、最初の数字は 0 から 23 の間で、次の 2 つの数字は時間のように 0 から 59 の間である必要がありますが、if ステートメントでいつでも解決できます。
ありがとう
文字列がコロンで区切られた 3 つの 2 桁の数字に一致するかどうかをテストするのを手伝ってくれませんか? 例えば:
12:13:14
preg_match を使用する必要があることは理解していますが、方法がわかりません
できれば、最初の数字は 0 から 23 の間で、次の 2 つの数字は時間のように 0 から 59 の間である必要がありますが、if ステートメントでいつでも解決できます。
ありがとう
この回答は、追加のテストを必要とせずに、文字列全体で正しいマッチングを行います (他の回答は、より長い文字列内の正規表現と一致します)。
if (preg_match('/^((?:[0-1][0-9])|(?:2[0-3])):([0-5][0-9]):([0-5][0-9])$/', $string, $matches))
{
print_r($matches);
}
else
{
echo "Does not match\n";
}
if (preg_match ('/\d\d:\d\d:\d\d/', $input)) {
// matches
} else {
// doesnt match
}
\d
は任意の数字を意味するため:
、間にある 2 つのグループのグループです。
$regex = "/\d\d\:\d\d\:\d\d/";
$subject = "12:13:14";
preg_match($regex, $subject, $matches);
print_r($matches);
数値比較でpreg_matchを使用できます$string = '23:24:25';
preg_match('~^(\d{2}):(\d{2}):(\d{2})$~', $string, $matches);
if (count($matches) != 3 || $matches[1] > 23 || $matches[2] > 59 || $matches[3] > 59 ......)
die('The digits are not right');
または、正規表現を捨てて、explodeを数値比較で使用することもできます。
$numbers = explode(':', $string);
if (count($numbers) != 3 || $numbers[0] > 23 || $numbers[1] > 59 || $numbers[2] > 59 ......)
die('The digits are not right');