var path = result[3]; // Содержит "david"
}
Следует отметить, что для регулярного выражения, в котором не установлен флаг g глобального поиска, метод match() возвращает то же значение, что и метод ехес() регулярного выражения: возвращаемый массив имеет свойства index и input , как описывается в обсуждении метода ехес() ниже.
Последний из методов объекта String , в котором используются регулярные выражения, - split(). Этот метод разбивает строку, для которой он вызван, на массив подстрок, используя аргумент в качестве разделителя. Например:
"123,456,789".split(","); // Вернет ["123","456","789"]
Метод split() может также принимать в качестве аргумента регулярное выражение. Это делает метод более мощным. Например, можно указать разделитель, допускающий произвольное число пробельных символов с обеих сторон:
"1, 2, 3 , 4 , 5".split(/\s*,\s*/); // Вернет ["1","2","З","4","5"]
Метод split() имеет и другие возможности. Полное описание приведено в третьей части книги при описании метода String. split().
Как было упомянуто в начале этой главы, регулярные выражения представлены в виде объектов RegExp . Помимо конструктора RegExp(), объекты RegExp поддерживают три метода и несколько свойств. Методы поиска и свойства класса RegExp описаны в следующих двух подразделах.
Конструктор RegExp() принимает один или два строковых аргумента и создает новый объект RegExp . Первый аргумент конструктора - это строка, содержащая тело регулярного выражения, т. е. текст, который должен находиться между символами слэша в литерале регулярного выражения. Обратите внимание, что в строковых литералах и регулярных выражениях для обозначения управляющих последовательностей используется символ \ , поэтому, передавая конструктору RegExp() регулярное выражение в виде строкового литерала, необходимо заменить каждый символ \ парой символов \\ . Второй аргумент RegExp() может отсутствовать. Если он указан, то определяет флаги регулярного выражения. Это должен быть один из символов g, i, m либо комбинация этих символов. Например:
// Находит все пятизначные числа в строке. Обратите внимание
// на использование в этом примере символов \\
var zipcode = new RegExp( \\d{5}, "g");
Конструктор RegExp() удобно использовать, когда регулярное выражение создается динамически и поэтому не может быть представлено с помощью синтаксиса литералов регулярных выражений. Например, чтобы найти строку, введенную, пользователем, надо создать регулярное выражение во время выполнения с помощью RegExp().
Каждый объект RegExp имеет пять свойств. Свойство source - строка, доступная только для чтения, содержащая текст регулярного выражения. Свойство global -логическое значение, доступное только для чтения, определяющее наличие флага g в регулярном выражении. Свойство ignoreCase - это логическое значение, доступное только для чтения, определяющее наличие флага і в регулярном выражении. Свойство multiline - это логическое значение, доступное только для чтения, определяющее наличие флага m в регулярном выражении. И последнее свойство lastlndex - это целое число, доступное для чтения и записи. Для шаблонов с флагом g это свойство содержит номер позиции в строке, с которой должен быть начат следующий поиск. Как описано ниже, оно используется методами ехес() и test().
Объекты RegExp определяют два метода, выполняющие поиск по шаблону; они ведут себя аналогично методам класса String , описанным выше. Основной метод класса RegExp , используемый для поиска по шаблону, - ехес(). Он похож на упоминавшийся метод match() класса String , за исключением того, что является методом класса RegExp , принимающим в качестве аргумента строку, а не методом класса String , принимающим аргумент RegExp . Метод ехес() выполняет регулярное выражение для указанной строки, т. е. ищет совпадение в строке. Бели совпадение не найдено, метод возвращает null . Однако если соответствие найдено, он возвращает такой же массив, как массив, возвращаемый методом match() для поиска без флага g. Нулевой элемент массива содержит строку, соответствующую регулярному выражению, а все последующие элементы - подстроки, соответствующие всем подвыражениям. Кроме того, свойство index содержит номер позиции символа, которым начинается соответствующий фрагмент, а свойство input ссылается на строку, в которой выполнялся поиск.
Читать дальше
Конец ознакомительного отрывка
Купить книгу