Регулярные выражения — система синтаксического разбора текстовых фрагментов по формализованному шаблону, основанная на системе записи образцов для поиска. Образец (англ. pattern), задающий правило поиска, по-русски также иногда называют “шаблоном”, “маской”.
Вот о них, а точнее их применении и поговорим. В разрезе ColdFusion.
Всё для меня началось с того, что как только я увидел паттерны – я ужаснулся: “как это запомнить?”, – пронеслось у меня в голове. Но разобравшись в основах – всё встало на свои места, и теперь без регулярных выражений я не представляю себе решение обычных задач – вроде очистки текста от html-кода, проверка e-mail на валидность, и тому подобное.
Для начала, разберёмся в основах – то есть тех таинственных сочетаниях различных символов, которые и составляют паттерн. Это не трудно!
Смотрим и запоминаем:
* – значит зеро, один или больше – то есть, паттерн
Ой*
даст вам и “Оййййй” и “О”.
? – значит зеро или один – то есть, паттерн
Он?
даст вам и “Он” и “Она”.
+ – значит один или больше – то есть, паттерн
Му+
даст вам и “Му” и “Муу”, но не “М”.
\ – исключит спецсимвол – то есть, паттерн
Голоден?
даст вам и “Голоден?”. Спецсимволы: [ ] \ ^ $ . | ? * + ( ) { }.
. – значит любой символ – то есть, паттерн
Го.
даст вам и “Гол” и “Гот”.
( ) – группировка, используется как правило с другим символом – | – то есть, паттерн
(Красн|Зелен)ый.
даст вам и “Красный” или “Зеленый”.
[ ] – значит перебор символов – то есть, паттерн
Го[лнт]
даст вам и “Гол” или “Гон” или “Гот”, а если паттерн будет
[0-9]+
, то это – любое число, если же это будет
[a-zA-Z]
, то это – любые буквы алфавита в любом регистре, а вот если это будет
[^0-9]
, то это значит любой символ за исключением чисел.
{ } – специальная группировка, указывающая число вхождений – то есть, паттерн
[0-9]{3}
даст вам “315”, но не “31”. А паттерн
[0-9]{2,5}
даст вам “12, “123”, “1234” и “12345”.
Это же правило действует и на буквы —
a{2,5}
даст “аа”, “ааа”, “аааа” и “ааааа”.
^ – значит начало строки – то есть, паттерн
^ftp
даст вам строку, начинающуюся с “ftp”.
$ – значит конец строки – то есть, паттерн
un$
даст вам строку, заканчивающуюся на “un” – к примеру — “injun”.
Собственно – это и есть главные правила.
Теперь приведу список наиболее необходимых паттернов для cf-программистов. Но, прежде – напомню, что в ColdFusion паттерны используются в сочетании со строковыми функциями, начинающимися с RE – что и обозначает регулярные выражения – Regular Expressions. Вот их список:
— REFind
— REFindNoCase
— REMatch
— REMatchNoCase
— REReplace
— REReplaceNoCase
Хотя, регулярные выражения используются также в тегах cfinput и cftextinput – тоже весьма удобно и необходимо.
Ну-с, начнём.
Удалить все html-теги из текста можно так:
new_text=rereplacenocase(html_text,"<[^>]*>","","ALL");
Защитимся от непотребных URL’ов – уберём из них символы “;”, ‘”’, “!”, “select”, “SELECT”, “insert” и “INSERT”:
new_qs=rereplacenocase(cgi.query_string,‘(;|"|!|select|SELECT|insert|INSERT)’,‘’, ‘all’);
Сверим e-mail?:
^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*.(([0-9]{ 1,3})|([a-zA-Z]{2,6})|(aero|coop|info|museum|name))
Пусть пользователь вводит правильное имя:
^[a-zA-Z0-9]+$
Если есть что добавить – пишите!
Комментариев нет:
Отправить комментарий