让difficuties与给定字符串中的日期匹配。尝试了无数的正则表达式建议。继续获取"没有找到日期",而日期显然在那里:07/02/2016。
我错过了什么?
function matchDate($str) {
if (preg_match('/\b(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}\b/', $str, $mDdate)) {
return $mDdate[0];
} else {
return "No date found.";
}
}
$str = "FISH HOUSE KINGS FISH HOUSE 100 W Broadway Long Beach, Ca. 90802 562-432-7463 Server: Ezbeth 07/02/2016 Table 44/1 8:38 PM 60018 10.00 18.75 enon Drop Fried atiish D I obster Crunchy Roll callap and Shrimp Char D 13.50 22.50 6.95 101.60 Cheeseburger 1/2lb D (2 14.95) 29.90 Caesar Salad Subtotal Tax 9.14 110.74 110.74 Total Ba 1ance Due KING'S FISH HOUSE Welcome To The House That Seafood Built Find Us Online @KingsFishHouse ";
echo matchDate($str);
答案 0 :(得分:3)
答案 1 :(得分:2)
示例正则表达式的问题在于您需要转义模式中的/
字符。
如果你没有转义/
字符,正则表达式会将其理解为正则表达式模式的结尾。
根据您的示例,解决方案应该是:
\b(0?[1-9]|1[012])\/(0?[1-9]|[12][0-9]|3[01])\/(19|20)?[0-9]{2}\b
您可以在this demo
中看到它的实际效果