Шаблоны для регулярных выражений в php должны быть окружены разделителем, чтобы показать, где шаблон начинается и останавливается, и запускаются модификаторы (без учета регистра, многострочные ... и т. Д.).Чаще всего вы видите косую черту в качестве разделителя, но в большинстве случаев подойдет любой символ.Примером скороговорки может быть: /pattern[a-z]*/i
.Обратите внимание, что первый символ является косой чертой (/
), а сам шаблон заканчивается тем же символом (/
), и после этого ожидаются только модификаторы, такие как i
для нечувствительного к регистру..тек (см .: * 1005)* Модификаторы ).Каким бы ни был первый символ, это разделитель, и часть шаблона должна заканчиваться тем же символом, что и конечный разделитель.Ошибка, которую вы видите, означает, что ваш первый символ, который является открытой скобкой, является разделителем.После следующей открытой скобки все, что после этого должно быть модификатором.Ошибка говорит о том, что после конечного разделителя есть недопустимый модификатор.Чтобы это исправить, вы должны иметь возможность просто поместить разделитель вокруг регулярного выражения, и он должен работать.См. Delimeters и общую справочную информацию о регулярных выражениях php .
Редактировать: Мне было интересно, почему вы получаете сообщение об ошибке двоеточия в качестве проблемного символа.Очевидно, php также поддерживает разделители в виде скобок, такие как {
и }
.При этом открытая скобка является разделителем, закрывающая скобка является конечным разделителем.Следующие символы, как ожидается, будут разделителями, и шаблон выдает ошибку, когда первый символ после закрывающего разделителя, двоеточие достигается, потому что это недопустимый модификатор.TIL.