Latest web development tutorials

Регулярные выражения - соответствующие правила

Базовый поиск по шаблону

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

^once

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

bucket$

Модель и "Кто сохранил все эти денежные средства в ведро" матч не совпадает с "ведрами". ^ И $ символов при использовании одновременно, она представляет собой точное совпадение (строка режима, как). Например:

^bucket$

Соответствует только строку "ведро". Если модель не включает в себя ^ и $, то он содержит строку, чтобы соответствовать любому из шаблона. Например: Режим

once

С помощью строки

There once was a man from NewYork
Who kept all of his cash in a bucket.

Match.

Буквы (один раз) в этом режиме является буквенный символ, то есть, они сказали, что само письмо, фигура такая же. Некоторые другие немного более сложные символы, такие как знаки препинания и белые символы (пробелы, вкладки и т.д.), использовать управляющую последовательность. Все управляющие последовательности, начинающиеся с обратной косой черты (\). Вкладки Escape-последовательность является: \ т. Так что, если мы хотим, чтобы проверить, является ли строка, начинающаяся с вкладкой, вы можете использовать этот режим:

^\t 

Точно так же, в лице \ N "новой линии", \ возврата каретки г. Другие специальные символы можно использовать перед обратной косой черты, например, как сама с обратной косой черты \\ указанный период. С \. Представление, и так далее.

кластерный характер

Программа в Интернет, регулярное выражение часто используется для проверки пользовательского ввода. Когда пользователь отправляет форму, а затем ввести номер телефона, который вы хотите, чтобы судить, адрес, адрес электронной почты, номер кредитной карты действителен, с общим характером на основе буквальным недостаточно.

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

[AaEeIiOoUu]

Этот шаблон соответствует любой гласной символы, но представляют собой лишь характер. С дефисом может представлять собой набор символов, таких как:

[a-z] //匹配所有的小写字母 
[A-Z] //匹配所有的大写字母 
[a-zA-Z] //匹配所有的字母 
[0-9] //匹配所有的数字 
[0-9\.\-] //匹配所有的数字,句号和减号 
[ \f\r\t\n] //匹配所有的白字符

Аналогичным образом, эти только представляют символ, это очень важно. Если вы хотите, чтобы соответствовать букве в нижнем регистре и один за другим строку чисел, таких, как "z2", "t6" или "g7", но не "АВ2", "r2d3" или "B52", а затем использовать этот шаблон:

^[a-z][0-9]$

Несмотря на то, [аз] от имени 26 букв диапазона, но здесь это только первый символ нижнего регистра соответствия строки.

Как уже упоминалось ранее ^ представляет собой начало строки, но он также имеет и другое значение. При использовании в квадратные скобки ^ является то, что оно означает "не" или "исключение" означает, часто используется для устранения символа. Также используйте предыдущий пример, мы спрашиваем первый символ не может быть числом:

^[^0-9][0-9]$

Этот режим "и 5", "G7" и "-2" сопоставляется, но с "12", "66" не совпадают. Вот несколько примеров исключения определенных символов:

[^a-z] //除了小写字母以外的所有字符 
[^\\\/\^] //除了(\)(/)(^)之外的所有字符 
[^\"\'] //除了双引号(")和单引号(')之外的所有字符

Специальный символ "." (Точка, полная остановка) в регулярном выражении, используемом для представления дополнение к "новой линии" всех персонажей. Таким образом, шаблон "^ 0,5 $" и любые два символа до конца номером 5 и строку матча в другой не- "Новая линия" характер в начале. Режим "." Может соответствовать любой строке, в дополнение к пустой строке, и включает в себя только "Новая линия" строку.

регулярное выражение PHP имеет некоторые встроенный универсальный характер кластера, список выглядит следующим образом:

字符簇 描述
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
[[:alnum:]] 任何字母和数字
[[:space:]] 任何空白字符
[[:upper:]] 任何大写字母
[[:lower:]] 任何小写字母
[[:punct:]] 任何标点符号
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]

OK повторяется

До сих пор, вы уже знаете, как сопоставить буквы или цифры, но больше случаев, вы можете сопоставить слово или набор цифр. Слово имеет ряд писем, группу из нескольких фигур в нечетное число. С помощью символа или символов, за кластером фигурные скобки ({}) используются для определения количества повторений предыдущего содержания.

字符簇 描述
^[a-zA-Z_]$ 所有的字母和下划线
^[[:alpha:]]{3}$ 所有的3个字母的单词
^a$ 字母a
^a{4}$ aaaa
^a{2,4}$ aa,aaa或aaaa
^a{1,3}$ a,aa或aaa
^a{2,}$ 包含多于两个a的字符串
^a{2,} 如:aardvark和aaab,但apple不行
a{2,} 如:baad和aaa,但Nantucket不行
\t{2} 两个制表符
.{2} 所有的两个字符

Эти примеры описывают использование трех различных фигурных скобках. Ряд, {х} означает "символ или символы перед кластера появляется только х раз", ряд запятой, {х,} означает "содержание появляется перед числом х раз или более", два с разделенные запятой числа, {х, у}, что "содержание перед, по крайней мере появляются х раз, но не больше, чем у раз." Мы можем расширить модель для большего количества слов или цифр:

^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串 
^[1-9][0-9]*$ //所有的正数 
^\-{0,1}[0-9]{1,}$ //所有的整数 
^[-]?[0-9]+\.?[0-9]+$ //所有的浮点数

Последний пример не очень хорошо понял, не так ли? Так Kanba: (? [-]) (. \) И все с дополнительным знаком минус В начале (^), за которым следует один или более цифр ([0-9] +), и десятичную точку Обсуждение на одну или несколько цифр ([0-9] +), и не следует что-либо другое ($). Ниже вы будете знать, более простой метод может быть использован.

"?" И специальные символы {0,1} равны между собой, они представляют: "0 или 1 перед" или "в передней части содержания не является обязательным." Таким образом, только примеры можно упростить:

^\-?[0-9]{1,}\.?[0-9]{1,}$

Специальный символ "*" и {0,} равны, все они представляют собой "0 или более из предыдущего содержания." И, наконец, символы "+" и {1} равны, то это означает "1 или больше предыдущего содержания", так что описанные выше четыре примера можно записать в виде:

^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划线的字符串 
^[0-9]+$ //所有的正数 
^\-?[0-9]+$ //所有的整数 
^\-?[0-9]*\.?[0-9]*$ //所有的浮点数

Конечно, это не принципиально уменьшить техническую сложность регулярных выражений, но может сделать их легче читать.