Главная страница | IT-студия |
|
Информационный портал
|
| Статьи о PHP | Регулярные выражения в JavaScript Регулярные выражения в "JavaScript"Автор - Выскорко М.С. ВведениеРегулярные выражения — это мощное средство для обработки входящих данных. Задача, требующая замены или поиска текста, может быть красиво решена с помощью этого "языка внутри языка". И хотя максимальный эффект от регулярных выражений можно добиться при использования серверных языков, всё же не стоит недооценивать возможности этого приложения и на стороне клиента. ПримечаниеСинтаксис регулярных выражений является достаточно сложным и его изучение требует серьёзных усилий. Наилучшим руководством по регулярным выражением на сегодняшний день является книга Дж. Фридла "Регулярные выражения", позволяющая, по словам автора, "научиться мыслить регулярными выражениями". Основные понятияРегулярное выражение (regular expression) — средство для обработки строк или последовательность символов, определяющая шаблон текста. Модификатор — предназначен для "инструктирования" регулярного выражения. Метасимволы — специальные символы, которые служат командами языка регулярных выражений. Регулярное выражение задаётся как обычная переменная, только вместо кавычек используется слэш, например: var reg=/рег_выражение/ Под простейшими шаблонами будем понимать такие шаблоны, которые не нуждаются в каких-либо специальных символах. Допустим, нашей задачей является замена всех букв "р" (малых и заглавных) на латинскую большую букву "R" в словосочетании Регулярные выражения. Создаём шаблон var reg=/р/ и воспользуясь методом replace осуществляем задуманное
В результате получим строку — РегуляRные выражения, замена произошла только на первом вхождении буквы "р" с учётом регистра. Но под условия нашей задачи этот результат не подходит... Тут нам понадобятся модификаторы "g" и "i", которые могут использоваться как отдельно, так и совместно. Эти модификаторы ставятся в конце шаблона регулярного выражения, после слэша, и имеют следующие значения: модификатор "g" — задаёт поиск в строке как "глобальный", т.е. в нашем случае замена произойдет для всех вхождений буквы "р". Теперь шаблон выглядит так: var reg=/р/g, подставив его в наш код
получим строку — РегуляRные выRажения. модификатор "i" — задаёт поиск в строке без учёта регистра, добавив этот модификатор в наш шаблон var reg=/р/gi, после выполнения скрипта получим искомый результат нашей задачи — RегуляRные выRажения. Специальные символы (метасимволы)Метасимволы задают тип символов искомой строки, способ окружения искомой строки в тексте, а так же количество символов отдельного типа в просматриваемом тексте. Поэтому метасимволы можно разделить на три группы:
Метасимволы поиска совпадений
Символы, приведенные в таблице "Метасимволы поиска совпадений" не надо путать с последовательностью знаков перехода используемых в строках, таких как \\t — табуляция, \\n - переход на новую строку и т.д. Количественные метасимволы
Каждый символ, приведенный в таблице "Количественные метасимволы" применяется к одному предшествующему символу или метасимволу в регулярном выражении. Метасимволы позиционирования
Последний набор метасимволов предназначен для обозначения, где искать (если это важно) подстроку в начале строки или в конце. Некоторые методы для работы с шаблонамиreplace — данный метод мы уже использовали в самом начале статьи, он предназначен для поиска образца и замены найденной подстроки на новую подстроку. test — данный метод проверяет, есть ли совпадения в строке относительно шаблона и возвращает false, если сопоставление с образцом закончилось неудачей, в противном случае true. например:
выведет в качестве результата false, т.к. строка "JavaScript" не равна строке "PHP". также метод test может возвращать вместо true или false любую другую строку заданную программистом. например:
в этом случае в качестве результата будет строка: Строка не совпала exec — данный метод выполняет сопоставление строки с образцом, заданным шаблоном. Если сопоставление с образцом закончилось неудачей, то возвращается значение null. В противном случае результатом является массив подстрок, соответствующих заданному образцу. /*Первый элемент массива будет равен исходной строке удовлетворяющее заданному шаблону*/ например:
в результате получим четыре строки: ЗаключениеВ статье отображено далеко не все возможности и прелести регулярных выражений, для более глубокого изучения этого вопроса посоветую изучить объект RegExp. Так же хочу обратить внимание на то, что синтаксис регулярных выражений не чем не отличается как в JavaScript, так и в PHP. К примеру, для проверки правильности ввода e-mail, регулярное выражение, что для JavaScript, что для PHP будет выглядеть одинаково /[0-9a-z_]+@[0-9a-z_^.]+.[a-z]{2,3}/i. |