在PHP中匹配特定字符串格式
我知道关于正则表达式和匹配还有很多类似的问题,但我就是不能让它起作用 我需要检查我的字符串是否采用以下特定格式: 13:30-14:00 2个数字,冒号,2个数字,空格,破折号,空格,2个数字,冒号,2个数字 这是我迄今为止最大的努力在PHP中匹配特定字符串格式,php,regex,Php,Regex,我知道关于正则表达式和匹配还有很多类似的问题,但我就是不能让它起作用 我需要检查我的字符串是否采用以下特定格式: 13:30-14:00 2个数字,冒号,2个数字,空格,破折号,空格,2个数字,冒号,2个数字 这是我迄今为止最大的努力 $string = "13:30 - 14:00"; $regex = '^[0-9]{2}:[0-9]{2} - [0-9]{2}:[0-9]{2}$'; if (preg_match($regex, $string)) { echo "matched patt
$string = "13:30 - 14:00";
$regex = '^[0-9]{2}:[0-9]{2} - [0-9]{2}:[0-9]{2}$';
if (preg_match($regex, $string)) {
echo "matched pattern";
}
我是一个RegexNoob,我不知道为什么这不起作用
有人能帮我让这个正则表达式匹配工作吗?首先:正则表达式应该以
/
开头/结尾(或
)
Second:
-
是一个特殊符号,应使用\
$string = "13:30 - 14:00";
$regex = '/^[0-9]{2}:[0-9]{2} \- [0-9]{2}:[0-9]{2}$/';
if (preg_match($regex, $string)) {
echo "matched pattern";
}
您可以这样尝试:
<?php
$strTime = "13:30 - 14:00";
$time = '(\d{2})(:)(\d{2})';
$rx = '#^' . $time . '( \- )' . $time . '$#';
if (preg_match($rx, $strTime)) {
echo "Pattern was found...";
// DO WHATEVER YOU WANT TO DO WHEN PATTERN IS MATCHED.
}
$string = "13:30 - 14:00";
$regex = '/^([0-1][0-9]|2[0-3]):[0-5][0-9] \- ([0-1][0-9]|2[0-3]):[0-5][0-9]$/';
if (preg_match($regex, $string)) {
echo "matched pattern";
}
因为这似乎是时间,因此必须检查它13:70
不是一个有效的时间,我想如果你不想接受13:71或25:12,你需要像这样扩展正则表达式:
<?php
$strTime = "13:30 - 14:00";
$time = '(\d{2})(:)(\d{2})';
$rx = '#^' . $time . '( \- )' . $time . '$#';
if (preg_match($rx, $strTime)) {
echo "Pattern was found...";
// DO WHATEVER YOU WANT TO DO WHEN PATTERN IS MATCHED.
}
$string = "13:30 - 14:00";
$regex = '/^([0-1][0-9]|2[0-3]):[0-5][0-9] \- ([0-1][0-9]|2[0-3]):[0-5][0-9]$/';
if (preg_match($regex, $string)) {
echo "matched pattern";
}
布尔西!非常感谢你!我没有投反对票。这是第一个也是最有用的答案,解释了为什么我的正则表达式不起作用。@u_mulder我没有投反对票,但这仍然可以改进,因为13:61将通过这个正则表达式。我最初的问题只要求匹配模式。我不需要验证时间,只要模式匹配即可。所以这个答案完全回答了我提出的问题。@Richard,如果你根本不需要验证模式,或者只需要验证一点点。请注意,25:71的格式没有验证。就时间而言,字符串的格式总是正确的,所以我只需要检查格式模式,不验证时间。好的,然后你可以使用strlen($string)==13和$string[6]='-'XDNo,因为这样“AB:cD-Ef:11”就会通过,这根本不符合我原来的问题@u_mulder的答案很准确,完全回答了我的问题。我的意思是,如果另一个字符串保证格式正确,不要做任何验证,如果不保证,那么就做所有验证,这就是契约设计的精神。这样你就不会重复另一个人做过的工作。-
是regexps中的一个特殊符号。谢谢,我忽略了它@多米尼克罗尔现在还好吗?是的,我们现在有了类似的答案。@u_mulder:不,这是错的。你的答案没有错,但没有解释最初的问题是什么。没有必要把俘虏小组放在任何地方。