2011-12-06 40 views
5

我有这样的测试工作得很好:PHP - 的preg_match和“未知的修饰词”的错误

if (ereg("([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $dateToTest, $tab) == false) 

和额日格已过时,我更换了这一个测试:

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

可能重复的[转换ereg表达式preg](http://stackoverflow.com/questions/6270004/converting- ereg-expressions-to-preg) – mario

回答

8

问题是分隔符/,因为您再次在您的regexp中使用它。

你要逃跑呢\/或使用其他分隔符像@

if (preg_match("@([0-9]{2})[-/.]([0-9]{2})[-/.]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})@", $dateToTest, $tab) == false) 

见的例子#3在Docu。还有一本关于delimiters的手册。

+0

我添加了关于分隔符文档的链接。 – PiTheNumber

4

表达式中有非反斜杠。请将/更改为\/或使用不同的分隔符(例如@)来启动表达式。

0

错误在这里/.。我不知道你是什么意思,这个正则表达式,所以你可以改变它.\.

+0

这似乎很明显:我测试日期时间格式,可以有3个日期分隔符:[ - 。 /] – Oliver

+0

@Oliver哦,对不起。这是我工作日的结束:) – k102

相关问题