2013-09-16 32 views
0

我已經編譯了一個正則表達式(基於其他職位),完美匹配多個日期格式時使用grep在文本牧馬人測試,但是當我把它放入PHP並與preg_match一起使用它不匹配任何東西。正則表達式作爲grep,而不是與preg_match

這裏是正則表達式:

/^(((?:0?[1-9]|1[012])|(?:0?[1-9]|[12][0-9]|3[01])|([a-zA-Z]+))([.]?[-.\\/\s]))?(((?:0?[1-9]|1[012])|(?:0?[1-9]|[12][0-9]|3[01]))([,]?[-.\\/\s]))?((?:20|19)[0-9]{2})$/ 

它應與(和確實在文本牧馬人):

03/12/2000 
4 4 2011 
16 04 1985 
11/11/1911 
04.13.2013 
May 12, 1912 
July 13 2012 
March 1999 
2015 
1944 

不匹配:

2000 12 4 
11/11/1111 
40.13.2013 

有什麼我錯過了,應該轉義或格式不同preg_match與grep

+1

你能證明你是如何使用的preg_match使用它嗎? – smerny

+0

這是一個很長的正則表達式。您可以通過拆分它的部分並查看它何時中斷來進行調試。 –

+0

smerny - 標準用法:if(preg_match($ pattern,$ myStr))... – Chris

回答

1

你需要使用「S」標誌,使之「DOTALL」匹配(包括換行符)

preg_match('#THE_REGEX_PATTERN#is',$myStr,$matches); 
+0

我不認爲我想要s修飾符。我試圖用這個來基本驗證用戶輸入至少格式化爲表單中日期字段的日期。但是,感謝您的建議 – Chris

0

,它正在對正則表達式測試工具。

嘗試在

http://toolspot.org/regex_tester.php

+0

它似乎在那裏工作,而不是我發現的其他測試工具。讓我再測試一次...... – Chris

+0

我認爲這可能是一個線索,正則表達式可以很好地與jQuery和Javascript一起工作,但不能與PHP一起工作。 PHP正則表達式中有不同於Javascript/jQuery的東西嗎?我懷疑這個問題,但我不確定 – Chris