我的测试运行良好:
if (ereg("([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $dateToTest, $tab) == false)
并且由于ereg已弃用,我已将此测试替换为:
if (preg_match("/([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})/", $dateToTest, $tab) == false)
但是我收到以下错误:
Warning: preg_match() [function.preg-match]: Unknown modifier '.' in ..................
问题是什么?如何解决?
答案 0 :(得分:8)
问题是分隔符/
,因为您再次在正则表达式中使用它。
您必须将其\/
转义或使用其他分隔符,例如@
:
if (preg_match("@([0-9]{2})[-/.]([0-9]{2})[-/.]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})@", $dateToTest, $tab) == false)
请参阅Docu中的示例#3。还有一本关于delimiters的手册。
答案 1 :(得分:4)
表达式中有未转义的斜杠。将/
更改为\/
或使用其他分隔符(例如@
)启动表达式。
答案 2 :(得分:0)
错误在这里/.
。我不知道这个正则表达式是什么意思,因此您可以将其更改为.
或\.