PHP preg_match полная строка

Я пытаюсь проверить, соответствует ли моя строка шаблону. То есть, полная строка может быть записана как шаблон. Однако preg_match возвращает true , если любая подстрока соответствует этому шаблону. (Например, preg_match("#[az]*#, "333k") возвращает 1 , чего я не хочу. В этом примере я бы предпочел проверить, вся строка содержит только небольшие латинские буквы.)

Related of "PHP preg_match полная строка"

Вы используете маркеры начала и конца , ^ и $ соответственно, чтобы указать начало и конец строки в шаблоне регулярных выражений. Таким образом вы можете заставить выражение соответствовать только всей строке, а не любой подстроке. В вашем случае это будет выглядеть так:

 preg_match("#^[az]*$#", "333k"); 

Вы также можете с помощью одного из этих маркеров указать, что шаблон должен соответствовать только началу или концу строки.

Обратите внимание, что для привязки соответствия строк в начале и конце строки вы также можете использовать привязки \A и \z .

 preg_match('~\A[az]*\z~', "333k"); ^^ ^^ 

\A и \z являются однозначными началом и концом привязок строк в регулярном выражении PHP (поскольку их поведение не зависит от каких-либо модификаторов регулярных выражений, даже если вы укажете модификатор m MULTILINE, они будут продолжать утверждать начальные и конечные позиции строк). Подробнее о PHP regex anchors в документации PHP .

Остерегайтесь \Z хотя: \Z будет соответствовать всей строке до последнего единственного разрыва строки, тогда как \z будет соответствовать только в самом конце строки , то есть после того, как все символы есть в строке (см. Whats the difference между \ z и \ Z в регулярном выражении и когда и как его использовать? )