..Использование регулярных выражений

©Измайлов Феликс

В данной заметке не буду сильно увлекаться теорией использования регулярных выражений, а постараюсь показать практическое применение, с подробными комментариями. В данном обзоре использовались методы объекта String, которые реализуют только часть методов глобального объекта RegExp. Полное руководство по методам объекта RegExp и Regular Expression Object смотрите в MSDN. Все примеры будут рабочими, их можно проверить, если скопировать в файл с расширением js (test.js к примеру).

1. У вас есть входная строка, в которой (по замыслу разработчика) должны находится только цифры, т.е. ввод только сумм вида 1234,00 или 1234.00. Необходимо одним приемом удалять все значения кроме цифр, точки и запятой.

// Объявляем переменную типа String, хотя можно это
// не делать, но будем придерживаться правил
var tmp = new String();
// Записываем в строку неудачно введенный текст
tmp = «123 тут что-то иное 99.00»;
// Выдергиваем только цифры и разделитель целой и дробной части
tmp = tmp.replace(/[^0123456789.,]/g, «»);
// Выводим контрольное сообщение, для проверки
WScript.echo(tmp);

Теперь подробнее что делается в этой команде. Replace принимает два параметра: первый — шаблон поиска, второй — текст, на который заменяются найденные через шаблон символы. Первый параметр — /[^0123456789.,]/g делится в свою очередь на две части, сам шаблон и флаги. Шаблон заключается в символы /. В [] заключается набор символов которые надо либо найти, либо исключить из поиска. ^ как раз обозначает, что надо найти символы, которые не входят в перечисленный список. Обратите внимание, что такое поведение символа ^ справедливо только внутри […]. При использовании его вне скобок, назначение символа другое (об этом несколько ниже). Флаг g обозначает глобальный поиск по всей строке. Итак, команда обозначает следующее — найди все символы, которые не входят в набор (с 0 до 9, точка и запятая) и замени их на пустую строку, т.е. удали.

2. Возможен вариант, когда вы не знаете, какой разделитель дробных и целых установлен на компьютере, а привести число надо к определенному знаку, например к точке. Тогда делаем простое действие

tmp = tmp.replace(«,»,».»);

3. Удаление начальных пробелов

tmp = tmp.replace(/^\s+/, «»);

Символ ^ обозначает начало строки, \s — пробел, табуляцию, перевод страницы, новую строку или перевод строки, + значит что предшествующий символ должен встретиться в строке один или более раз.

4. Удаление конечных пробелов

tmp = tmp.replace(/\s+$/, «»);

От предыдущего выражения отличается тем, что нет ^, а появляется признак $, обозначающий, что надо искать в конце строки.

В заключении небольшая хитрость. Если вы захотите использовать те или иные приемы в виде методов, к примеру: tmp.allTrim(), а allTrim выполняет какое либо действие, то определить метод можно так

String.prototype.allTrim = function() {
return this.replace(/\s*/g, «»); }

что означает удаление ВСЕХ пробелов в строке.

   Отправить статью как PDF