
- •Var имя_переменной:
- •Var myName пример js6
- •Integer
- •InternetAddress
- •Internetaddress
- •Приоритеты выполнения операций
- •If (условие1) {
- •Операторы цикла
- •Var column,row;
- •Var column,row;
- •Var objArr;
- •ValueOf()
- •Var myArr, c;
- •Var timeStr;
- •Var Spoint;
- •Регулярные выражения: пример 30
- •Работа с регулярными выражениями
- •Методы класса RegExp
- •Var result, re, str;
- •Свойства глобального объекта RegExp.
- •Var re, str, protocol, address, filename, result;
- •Regular Expressions
- •Метасимволы
- •Классы символов
- •Квантификаторы
- •Action в javascript
- •Использование Action в javascript.
- •Свойство method.
- •Использование свойства method в js.
- •Заключение.
Var re, str, protocol, address, filename, result;
str = "http://www.somedomain.ru/index2.html"
re = new RegExp("((\w+):\/\/)?([^\/]+)(.*)?", "i");
result = re.exec(str);
if (result != null)
{
protocol = RegExp.$2;
address = RegExp.$3;
filename = RegExp.$4;
...
}
Здесь для доступа к результату применения регулярного выражения используется глобальный объект RegExp. Свойство RegExp.$n –позволяет нам получить подвыражение, сохранённое в круглых скобках. Подвыражения в скобках нумеруются в слева направо.
В регулярном выражении мы использовали вложенные друг в друга подвыражения. В этом случае из них сохраняется сначала внешнее, а затем внутреннее. Это нами сделано для того, чтобы выделить из группы символов "http://" обозначение протокола "http". А группу "http://", сохраненную под номером 1, можно просто потом не использовать.
Строка result = re.exec(str) запускает "разборку".
С помощью условного оператора if (result != null)……… проверяем, совпало ли наше регулярное выражение с исходной строкой, то есть правилен ли наш WEB-адрес.
Regular Expressions
Регулярные выражения используются для поиска в тексте подстроки, соответствующей некоторому заданному шаблону. С их помощью можно выделить из текста html-страницы ссылки, проверить перед отправкой правильность заполнения полей формы, и многое другое.
Регулярное выражение в JavaScript – это объект класса RegExp. Соответственно, создаются они так:
var re = new RegExp(’str’, ’i’);
Здесь ‘str’ – шаблон для поиска, а ‘i’ – так называемый модификатор. Модификаторы задают некоторые параметры поиска. Так, в данном случае модификатор /i указывает, что поиск будет производиться без учёта регистра. Поэтому re совпадёт как со строкой ‘str’, так и со строкой ‘StR’. Без модификатора /i вторая подстрока не соответствовала бы шаблону.
Для создания объектов RegExp можно использовать упрощенный синтаксис:
var re = /str/i;
Пример Js40
Рассмотрим, как применять регулярные выражения для поиска подстрок. Метод класса String search производит поиск совпадения с регулярным выражением, возвращая индекс начала совпадения или -1, если подстрока не найдена. Так, код
var re = /str/i;
var st = " String where substring is searched.";
var s = "Does not match";
alert(st.search(re) + ' ' + s.search(re));
выведет
Заметим, что поиск в строке st даёт 1 (String), а не 17 (substring), то есть ищется именно первое совпадение. Если же совпадения нет, возвращается -1, что видно на примере поиска в строке s.
Пример Js38
Метод match также ищет подстроку, совпадающую с шаблоном, но возвращает массив, содержащий совпадения, или null, если совпадений нет. Так, код
var re = /str/i;
var st = " String where substring is searched.";
var s = "Does not match";
alert(st.match(re) + ' ' + s.match(re));
покажет
Пример Js39
Заметим, что опять возвращено только первое совпадение. Чтобы найти все, необходимо указать модификатор /g:
var re = /str/ig;
var st = " String where substring is searched.";
var s = "Does not match";
alert(st.match(re) + ' ' + s.match(re));
Тогда результат будет следующим:
Пример Js41
Далее, метод replace заменяет найденные соответствия указываемой подстрокой. К примеру,
var re = /str/ig;
var st = " String where substring is searched.";
var s = "Does not match";
alert(st.replace(re, "STR") + ' ' + s.replace(re, "STR"));
выведет
Пример Js42
Наконец, метод split производит разбиение строки по подстрокам, соответствующим шаблону. Например,
var re = /,/;
var st = "comma,separated,values";
alert(st.split(re)[2]);
выведет
st.split(re) создаёт массив [‘comma’, ‘separated’, ‘values’], разбивая строку по запятой, так как именно запятая совпадает с шаблоном re, затем выводится последний элемент этого массива.
Пример Js43
Помимо методов класса String можно пользоваться методами класса RegExp exec и test. Первый возвращает массив, содержащий подстроку, совпадающую с шаблоном, что очень похоже на поведение match с регулярным выражением в отсутствие модификатора /g. Второй просто возвращает логическое значение, сигнализирующее, есть ли совпадение. Так, пример
var re = /str/ig;
var st = " String where substring is searched.";
var s = "Does not match";
alert(re.exec(st) + ' ' + re.exec(s) + '\n' + re.test(st) + ' ' + re.test(s));
выведет
На самом деле работа этих методов описана не полностью, поскольку мы ещё не знаем всей мощи регулярных выражений. По ходу изучения регулярных выражений будем уточнять работу этих методов.