PHP检查复杂的字符串格式是否正确

时间:2014-04-22 14:07:19

标签: php regex string formatting

寻找有关如何在PHP中验证字符串的一些帮助。

要验证的格式是

X.XXam[d[i]-d[i] Only]

示例条目可以是:

8:55pm[Tues-Thurs Only]

d[i]表示一个关联数组值,具体取决于星期几。 例如,上面包含星期六和星期日。

我需要在插入数据库之前确保/验证这一点。

我可以帮忙解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

这适用于您的情况:

^\d{1,2}:\d{2}[ap]m\[\w+\-\w+ Only]$

演示:http://regex101.com/r/mH9lX1

答案 1 :(得分:0)

查看正则表达式101.这是一个创建正则表达式并理解它们的精彩工具。从那里我得到this solution给你:

%^\d{1,2}:\d{1,2}([ap])m\[(Mon|Tue|Wed|Thu|Fri|-){1,} Only\]$%mg

第一位(\d{1,2})接受0到99之间的数字,然后是:和0到99之间的另一个数字。 然后是ap,后跟m。 然后,您可以MonTue或....或-获得1次结束时间。

最后,您拥有修饰符gmm是使用代表行的开头和结尾的^$修饰符。 g只是查找所有结果而不是第一个结果。你可以把它留下来。

要使用名为$array的数组中的工作日,只需将其内嵌到字符串中并将其填充到表达式中,如下所示:

$weekdaysString = implode('|',$array);
$regex = '%^\d{1,2}:\d{1,2}([ap])m\[('.$weekdaysString.'|-){1,} Only\]$%mg';

阅读implode