Я хочу знать условие preg_match в PHP, чтобы проверить, начинается ли строка с месяца (с января по декабрь) и заканчивается двоеточием (:). Между ними может быть любой алфавит, символ или номер. Кто-то может помочь? Застрял в течение часа, не получая правильных результатов.Соответствие шаблону Regex в PHP
Например, строка "December 2,&*&98hkjk:"
должна возвращать значение true.
Я получил шаблон для месяца и колона, используя txt2re.com, но я не знаю, как его сформировать и проверить результат.
$txt='May k!ur2!3:';
$re1='((?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Sept|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?))'; # Month 1
$re2='.*?'; # Non-greedy match on filler
$re3=':'; # Uninteresting: c
$re4='.*?'; # Non-greedy match on filler
$re5='(:)'; # Any Single Character 1
if ($c=preg_match_all ("/".$re1.$re2.$re3.$re4.$re5."/is", $txt, $matches))
{
$month1=$matches[1][0];
$c1=$matches[2][0];
echo "Matched \n";
}
else { echo "No match"; }
ПОЛУЧИЛ РЕШЕНИЕ:
$txt=$_POST['wtfb'];
$re1='((?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Sept|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?))'; # Month 1
$re4='.*?'; # Non-greedy match on filler
$re5='(:)'; # Any Single Character 1
if ($c=preg_match_all ("/".$re1.$re4.$re5."/is", $txt, $matches))
{
$month1=$matches[1][0];
$c1=$matches[2][0];
echo 'Match';
}
else
{
echo 'No match';
}
Показывать ваши попытки. Спросите, на что вы застряли. – Amadan
Пожалуйста, разместите шаблон регулярного выражения, который вы пробовали. –
'$ re3' и' $ re5' совпадают с символом двоеточия, поэтому он будет соответствовать только тогда, когда есть два двоеточия. В вашем примере есть только один двоеточие. – Barmar