如何检查这个特殊的字符串

时间:2011-04-23 21:45:27

标签: php regex

我有一个特殊的字符串来检查PHP脚本。格式如下:

XX - XX:XX:XX - Somethings

如:

  1. 每个XX必须是??或一对数字;
  2. 第一个XX可以采取各种数字;
  3. 第二个XX必须是00和10;
  4. 第三和第四XX必须是00到59;
  5. 有些事可以是一切,无所谓;
  6. 这些是一些例子:

    00 - ??:??:?? - Blablabla // OK
    99 - ??:99:?? - Blablabla // NO (99 is too high)
    99 - 12:50:40 - Blablabla // NO (12 is too high)
    ?? - AA:50:40 - Blablabla // NO (AA is not a pair of digit)
    99 - 2:50:40 - Blablabla // NO (2 is not a pair of digit; I need 02)
    99 -08:49:40 - Blablabla // NO (-08 need a space)
    

    我该怎么办?我认为最好的方法是Regex,但我真的不知道该怎么做:)感谢任何帮助

2 个答案:

答案 0 :(得分:5)

你可以这样做

$subj = '00 - 04:38:27 - Hi';
preg_match('/^(\?\?|\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/', $subj, $matches);

然后您可以访问匹配中的字段:

$matches[1] = 00
$matches[2] = 04
$matches[3] = 38
$matches[4] = 27
$matches[5] = Hi

答案 1 :(得分:1)

这似乎完成了工作(在http://www.spaweditor.com/scripts/regex/index.php测试) /([0-9\?]{2} - (0[0-9]|10|\?\?):([0-5][0-9]|\?\?):([0-5][0-9]|\?\?) - .*)/