Php 如何检查此特殊字符串
我有一个特殊的字符串要用PHP脚本检查。格式如下:Php 如何检查此特殊字符串,php,regex,Php,Regex,我有一个特殊的字符串要用PHP脚本检查。格式如下: XX - XX:XX:XX - Somethings 例如: 每个XX必须是??或一对数字 第一个XX可以取各种数字 第二个XX必须介于00和10之间 第三个和第四个XX必须介于00和59之间 有些东西可以是一切,这并不重要 以下是一些例子: 00 - ??:??:?? - Blablabla // OK 99 - ??:99:?? - Blablabla // NO (99 is too high) 99 - 12:50:40 - Blab
XX - XX:XX:XX - Somethings
例如:
??或一对数字李>
第一个XX可以取各种数字李>
第二个XX必须介于00和10之间李>
第三个和第四个XX必须介于00和59之间李>
有些东西可以是一切,这并不重要李>
以下是一些例子:
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)
我怎么做?我认为最好的方法是正则表达式,但我真的不知道怎么做:)谢谢你的帮助
$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
你可以这样做
$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
这似乎可以完成任务(在进行测试)
/([0-9\?]{2}-(0[0-9]| 10 |?\?):([0-5][0-9]|?\):([0-5][0-9]|?\?)-*)/
这似乎可以完成工作(在进行测试)
/([0-9\?]{2}-(0[0-9]| 10\?):([0-5][0-9]| \?):([0-5][0-9]| \?)-.*)/
你试过阅读例如手册吗?()您面临的具体问题是什么?例如,我不知道如何说“2位数的数字是从0到10的”:)这一组字符有什么“特殊”之处?00到10对于第2个数字来说似乎是一个奇怪的范围,我本以为是00到23;-)你试过阅读手册吗?()您面临的具体问题是什么?例如,我不知道如何说“2位数的数字是从0到10的”:)这一组字符有什么“特殊”之处?00到10对于第2个数字来说似乎是一个奇怪的范围,我本以为是00到23;-)似乎有用!你真的很摇滚!!!它为我节省了许多行代码:)而且我已经理解了它为什么能工作!呵呵。只有一件事:regex开头的“/是什么意思?和/或最后?这是如何用perl编写正则表达式(用斜杠括起来)。由于PHP松散地基于perl,它继承了这种语法。你可以用f.ex。在终止斜杠后向正则表达式引擎写入标志,如“/…/i”(使其不区分大小写);否则,该模式将匹配可能与您的格式不匹配的行。确保得到更改。我刚刚发布了(而不是删除了)关于^的评论。你更快了+1。嗯…补充!但还是不理解开头/结尾的这些符号。现在^too:)似乎起作用了!你真的很摇滚!!!它为我节省了许多行代码:)而且我已经理解了它为什么能工作!呵呵。只有一件事:regex开头的“/是什么意思?和/或最后?这是如何用perl编写正则表达式(用斜杠括起来)。由于PHP松散地基于perl,它继承了这种语法。你可以用f.ex。在终止斜杠后向正则表达式引擎写入标志,如“/…/i”(使其不区分大小写);否则,该模式将匹配可能与您的格式不匹配的行。确保得到更改。我刚刚发布了(而不是删除了)关于^的评论。你更快了+1。嗯…补充!但还是不理解开头/结尾的这些符号。现在是^too:)