我知道关于正则表达式和匹配有很多类似的问题,但我不能让它工作!
我需要检查我的字符串是否具有以下特定格式:
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 pattern";
}
我是一个正则表达式的菜鸟,我不确定为什么这不起作用。
有人可以帮助我让这个正则表达式匹配起作用吗?
答案 0 :(得分:1)
$string = "13:30 - 14:00";
$regex = '/^([0-1][0-9]:[0-5][0-9])|(2[0-3]:[0-5][0-9])|(24:00) \- ([0-1][0-9]:[0-5][0-9])|(2[0-3]:[0-5][0-9])|(24:00)$/';
if(preg_match($regex, $string)){
echo "matched pattern";
}
似乎是时间,为此必须检查! 13:70
不是我猜的有效时间
答案 1 :(得分:1)
如果您不想接受13:71或25:12,则需要像这样扩展正则表达式:
$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";
}
答案 2 :(得分:0)
首先:regexp应以/
(或#
)开头/结尾
第二次:-
是一个特殊符号,应使用\
进行转义
$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";
}
答案 3 :(得分:-1)
你可以这样试试:
<?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.
}