*   >> Чтение Образование Статьи >> tech >> web development

Построение регулярного выражения в Php

<р> PHP регулярных выражений - Часть VI Введение Многие из примеров мы сталкиваемся простые примеры. В этом разделе мы рассмотрим два примера, которые более требовательны. Прежде чем мы эту часть серии, мы будем говорить о том, что называется возвратом. Шаги, необходимые для создания Regex Эти шаги, необходимые для построения регулярных выражений: * Укажите задачу в деталях, * Разбейте задачу на более мелкие части, * Перевести мелкие детали в регулярных выражений, * Смешайте регулярных выражений, * Оптимизация финал в сочетании регулярные выражения.

Два примера Пример 1 шестнадцатеричный цветовой код Проверка Задание Задание в деталях пример шестнадцатеричной цветовой код # 4C8. Другим примером является # 44CC88. * Шестнадцатеричный код начинается с хэш, а затем либо 3 шестнадцатеричных чисел или 6 шестнадцатеричных чисел. * Шестнадцатеричные цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E и F. * В шестнадцатеричных буквы могут быть в нижней или верхней случае. Ломая проблемы на более мелкие части * Он начинается с #.

* Это сопровождается 3 шестнадцатеричных чисел или * 6 шестнадцатеричные числа * Там нет символов после 3 или 6 шестнадцатеричных цифр. Перевод в регулярных выражений Есть три мелкие детали выше. Первая часть дает регулярное выражение: /^ # /Вторая часть дает регулярное выражение: /[0-9a-FA-F] {3} /Третья часть дает регулярное выражение: /[0-9a-FA-F] { 6} /Последняя часть дает регулярное выражение: /$ /Объединение регулярных выражений Это комбинированный регулярное выражение: /^ # ([0-9a-FA-F] {3} $) | ([0-9a-FA-F ] {6} $) /Обратите внимание на альтернативный метасимвол, | для трех или шести шестнадцатеричных цифр.

Также обратите внимание на скобки, отделяющие альтернативные группы. Оптимизация Комбинированный Regex это означает, сокращая сочетании регулярное выражение. Обратите внимание, что 0-9 сокращается до \\ D. Таким образом, в комбинированном регулярных выражений, мы меняем два вхождения 0-9 \\ D. Оптимизированная регулярное выражение: /^ # ([\\ да-FA-F] {3} $) | ([\\ да-FA-F] {6} $) /Это выражение короче, чем выше двух символов. Следующий код иллюстрирует эту тему: $ = "# 44CC88"; если (preg_match ("/^ # ([\\ да-FA-F] {3} $) | ([\\ да-FA-F] {6} $) /", $ тема)) эхо "Согласованные".

"Еще эхо« Не согласованный "."?> Пример 2 Имя Проверка Задание Задание в деталях Предположим, что у нас есть сайт, где пользователи должны авторизоваться на сайте. Мы можем сказать пользователю, что его имя должно содержать буквы в верхнем или нижнем случае и /или цифр, от нуля до 9 и /или подчеркивания _. Мы также настаиваем, что имя не должно быть менее 3 символов или больше, что 18 символов. В этом примере мы ввели подробности спецификации.

Ломая проблемы на более мелкие части Имя Войти состоит из * букв алфавита в нижнем или верхнем регистре от 3 до 18 букв, включительно, и /или * цифры от 0 до 9 от 3 до 18 цифр, включая, и /или * подчеркивания от 3 до 18 цифр, включительно. Это означает, что вы можете иметь до 18 подчеркивания для имени. Позволим что для простоты. * Мы должны ограничить предмет строку 3 или 6 символов.

Перевод в регулярных выражений регулярное выражение для первой точки: /^ [A-Za-Z] {3,18} $ /Регулярное выражение для второй точки: /^ [0-9] {3,18} $ /The Regex для третьей точки: /^ [_] {3,18} $ /Четвертый пункт присуще выше регулярных выражений. Сочетание регулярных выражений В разделе сломать, вышеупомянутые три точки в сочетании с фразой "и /или" Там нет прямой способ сделать это, так что мы должны вывести это. Это в сочетании регулярное выражение: /^ [A-Za-Z0-9 _] {3,18} $ /Оптимизация Комбинированный Regex Это означает, сокращая сочетании регулярное выражение.

Обратите внимание, что класс [A-Za-z0-9_] сокращается до \\ W. Оптимизированная регулярное выражение: /^ [\\ W] {3,18} $ /возвратом Мы видели, как в соответствии альтернативы, используя чередование метасимвол, |. При сопоставлении альтернатив, PHP использует процесс, известный как отката. Я проиллюстрирую это на примере. Рассмотрим следующее выражение: preg_match ("/(124 | 123) (46 | 4 | 45) /", "12345") я объясню отступает, объясняя работу над выражения. Следующие шаги объясняют, как PHP разрешает это выражение. А. Она начинается с первого числа в строке темы "1". Б.

Он пытается первую альтернативу в первом подшаблоне '124'. C. Он видит согласование '1', за которой следует '2'. Все в порядке. Д. Он замечает, что "4" в регулярном выражении не соответствует '3' в строке, - это тупик. Так что отступает два символа в строке, и выбирает второй вариант в первом подшаблоне '123'. Е. матчей '1' следуют '2' с последующим «3». Первый подшаблон выполнено. Ф. Она движется на второй подшаблоне и выбирает первый вариант "46. Г. Это соответствует '4' в подшаблонов строки. Х.

Тем не менее, "6" в регулярном выражении не соответствует "5" в строке подшаблонов, так что это тупик. Это отступает на один символ в строке подшаблонов и выбирает второй вариант во втором подшаблоне '4'. I. '4' матчи. Второй подшаблон выполнено. Дж Мы в конце регулярного выражения; мы сделали! Мы соответствует '1234' из строки темы "12345". Есть две вещи, чтобы отметить об этом процессе. Во-первых, третий вариант во втором подшаблоне '45' также позволяет матч, но процесс остановился, прежде чем он добрался до третьей альтернативы - в данном положении персонажа, левый побеждает.

Во-вторых, процесс был в состоянии получить матч на позиции первого символа строки текста '1'. Если бы не было ни одного совпадения в первой позиции, PHP будет двигаться на вторую позицию символа '2' и попытаться матч снова и снова. PHP дает и заявляет "12345" = ~ /(124 | 123) (46 | 4 | 45) /, чтобы быть ложным, только тогда, когда все возможные пути на всех возможных позициях символов были исчерпаны. Х Модификатор Подробнее Этот модификатор установлен, поставив х в нижнем регистре в непосредственной близости от второго косой черты регулярного выражения.

То есть: /шаблон /х Если этот модификатор установлен, пробельные символы в шаблоне полностью игнорируются, за исключением, когда бежал или внутри класса символов, а символы между неизолированную # вне класса символов и следующий символ новой строки включительно, являются также игнорируются. Я проиллюстрирую это все. Это говорит пробельные символы в шаблоне полностью игнорируются, когда бежал за исключением или внутри класса символов. Рассмотрим строка темы: $ предмет = "Я мужчина, садясь."; Следующее выражение с модификатором х не производит матч.

preg_match ("/человек садясь /х", $ тема) Это потому, что в регулярном выражении, одно-пространство между "человеком" и "сидя" и "сидя" и "вниз" не признаются, с наличием из х модификатор. Если вы удалите эти соответствующие пространства в теме у вас будет матч, с х модификатора. В следующем, объект будет матч с выше регулярное выражение: $ предметом = "Я mansittingdown."; Если вы хотите оригинальную тему и регулярное выражение, чтобы соответствовать, то у вас есть, чтобы избежать пробелов в регулярном выражении.

Следующее выражение производит матч с исходной теме: preg_match ("/человек \\ заседании \\ вниз /х", $ предмет) Беглый единое пространство является "\\". Давайте теперь поговорим о пробелом в классе символов. Обратите внимание, что пробелы на самом деле [\\ \\ т \\ г \\ п \\ е], не только "\\". Тем не менее, давайте продолжим наш рисунок, используя "\\". Мы используем ту же тему, а именно: $ предметом =; "Я мужчина, садясь.

" Если мы хотим, чтобы соответствовать пространство перед заседании, а затем "сидя", с х модификатора, то наша регулярное выражение может быть; /[] /Х сидя Обратите внимание, что пробелы в классе символов не сбежал. То есть, с х модификатора, пробелы внутри класса символов не бежал, в то время как пробелы вне класса символов убежал. Следующее выражение производит матч: preg_match ("/[], сидя /х", $ предмет) С х модификатора, любой текст между символа # и явной или неявной символа новой строки игнорируется. Неявное символ новой строки выполняется нажатием клавиши Ввод, когда вы набираете.

Явное символ новой строки достигается путем ввода \\ п характер. Рассмотрим следующий код: $ предмет = "Я мужчина, садясь."; $ п = "/человек \\ #comment идет здесь сидит /х"; если (preg_match ($ повторно, $ тема)) эхо "Согласованные". "."? "Еще эхо" Не согласованный> Объект: $ предметом = "Я мужчина, садясь."; Регулярное выражение является: $ п = "/человек \\ #comment идет здесь сидит /х"; Обратите внимание на наличие символа # и неявное символ новой строки, полученной после слова "здесь", нажав клавишу Enter. Матч производится.

К югу строка, которая на самом деле является соответствие "человек, сидящий". В следующем коде, символ новой строки явно, с \\ п. Матч также производится. $ при условии = "Я мужчина, садясь."; $ п = "/человек \\ #comment идет здесь \\ nsitting /х"; если (preg_match ($ повторно, $ тема)) эхо "Согласованные". "Еще эхо« Не согласованный "."?>

Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Чтение Образование Статьи,https://ru.nmjjxx.com All rights reserved.