Введение в регулярные выражения (для чайников)
Мой знакомый опытный программист, владеющий многими языками программирования, признал, что почти не пользуется регулярными выражениями. Почему? Представляется, что это связано с неочевидностью синтаксиса регулярных выражений, отличающегося от интуитивно понятных конструкций большинства языков. Но этот недостаток многократно перекрывается мощью и компактностью регулярных выражений.
Регулярные выражения – это мини-язык для поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов. Их можно использовать в различных языках программирования.
Мы будем показывать примеры контроля корректности полей, которые вводит пользователь сайта через предоставляемую ему форму (бланк). Для это на языке JAVASCRIPT используется конструкция SHABLON.TEST(STROKA), которая возвращает TRUE (истина), если строка STROKA соответствует шаблону SHABLON, или FALSE (ложь) в противном случае.
Шаблон, т.е. само регулярное выражение, окаймляется символами слеш (/). Например,
var schablon = /удар/ ;
Этот простейший шаблон требует, стобы строка содержала буквосочетание «удар». Так, строки «Коля ударил Петю», «он был ударником», «нокаутирующий удар» удовлетворяют нашему шаблону.
Регулярное выражение может состоять не только из символов, представляющих самих себя, как в нашем примере, а и служебные символы (метасимволы). Если, например, нужно, чтобы буквосочетание «удар» было в самом конце строки, то в шаблон надо вставить символ $ перед закрывающим слешем. И шаблон будет выглядить так:
var schablon = /удар$/ ;
А если требуется, чтобы строка начиналась с этого буквосочетания, то регулярное выражение должно начинаться символом ^. Таким образом, шаблон
var schablon = /^удар$/ ;
требует, чтобы строка содержала только 4 символа «удар».
Следующий пример (целые числа). Метасимвол \d соответствует любой цифре от 0 до 9. Если надо, чтобы строка содержала целое число из трех цифр, то шаблон может быть таким:
var schablon = /^\d\d\d$/ ;
Этому шаблону удовлетворяют строки «123», «507», но не удовлетворяют «25», «1234», «105€». Если число может состоять из 3,4,5 или 6 цифр, то это можно отразить в шаблоне так:
var schablon = /^\d{3,6}$/ ;
А если допускается любое количество цифр, то шаблон может быть таким:
var schablon = /^\d+$/ ;
Если же допускается отсутствие цифр (пустая строка) или любое их количество, то
var schablon = /^\d*$/ ;
Еще пример (десятичное число). Десятичные числа содержат цифры, точку и далее цифры. Поскольку точка в регулярных выражениях используется как служебный символ (метасимвол), то нужно обозначить собственное значение точки обратным слешем перед ней. Шаблон может быть таким:
var schablon = /^\d+\.\d+$/ ;
Такому шаблону будут удовлетворять строки «987.654», «0.25», «12345.678», но не удовлетворять «25.», «0», «.255», «1,5». Если захочется сделать допустимыми также целые числа, нужно в шаблоне указать, что дробная часть может отсутствовать:
var schablon = /^\d+(\.\d+)?$/ ;
Вопросительный знак показывает, что содержимое скобок перед ним может присутствовать 0 или 1 раз. Давайте разрешим теперь использовать в качестве десятичной точки не только точку, а и запятую. Тогда вместо \. Нужно записать (\.|\,) , где символ | означает ИЛИ, т.е допускает выбор. Шаблон будет таким:
var schablon = /^\d+((\.|\,)\d+)?$/ ;
Такому шаблону будут удовлетворять строки «0.5», «0,5», «25,333», «123», но не будут удовлетворять «.25», «1.2.3», «55.», «34.,25».
Надеюсь, читатель понимает, что мы рассмотрели лишь малую толику возможностей регулярных выражений. Более глубокие знания можно получить в специальной литературе или в интернете.
В заключение приведем шпаргалку, заимствованную из интернета, облегчающую использование регулярных выражений.
Вступите в группу, и вы сможете просматривать изображения в полном размере
Это интересно
+1
|
|||
Последние откомментированные темы: