ищет в строке соответствия шаблону, определяемому выражением regexp. Поведение этого метода существенно зависит от того, установлен атрибут «g» в regexp или нет (регулярные выражения подробно рассмотрены в главе 10).
Если в regexp нет атрибута «g»,
match
ищет одно соответствие в строке. Если соответствие не найдено,
match
возвращает null. В противном случае метод возвращает массив, содержащий информацию о найденном соответствии. Элемент массива с индексом 0 содержит найденный текст. Оставшиеся
элементы содержат текст, соответствующий всем подвыражениям внутри регулярного выражения. В дополнение к этим обычным элементам массива возвращаемый массив имеет еще два объектных свойства. Свойство
index
массива указывает позицию начала найденного текста внутри строки. Кроме того, свойство
input
возвращаемого массива содержит ссылку на саму строку. Если в regexp установлен флаг «g»,
match
выполняет глобальный поиск, находя в строке все соответствующие подстроки. Метод возвращает null, если соответствие не найдено, или массив, если найдено одно и более соответствий. Однако содержимое полученного массива при глобальном поиске существенно отличается. В этом случае элементы массива содержат все подстроки, найденные в строке, а сам массив не имеет свойств
index
и
input
. Обратите внимание: для глобального поиска
match
не предоставляет информации о подвыражениях в скобках и не указывает, в каком месте строки было найдено каждое из соответствий. Эту информацию для глобального поиска можно получить методом
RegExp.ехес.
Пример
Следующий фрагмент реализует глобальный поиск и находит все числа в строке:
"1 plus 2 equals 3".match(/\d+/g) // Вернет ["1", "2", "3”]
Следующий фрагмент реализует неглобальный поиск и использует более сложное регулярное выражение с несколькими подвыражениями. Он находит URL-адрес, а подвыражения регулярного выражения соответствуют протоколу, хосту и пути в URL:
var url = /(\w+):\/\/([\w.]+)\/(\S*)/;
var text = "Visit my home page at http://www.isp.com/~david";
var result = text.match(url);
if (result != null) {
var fullurl = result[0]; // Содержит "http://www.isp.com/~david”
var protocol = result[1];
// Содержит "http"
var host = result[2];
// Содержит "www.isp.com"
var path = result[3];
// Содержит "~david"
}
См. также
RegExp, RegExp.ехес, RegExp.test, String.replace, String.search; глава 10
, определяющий шаблон заменяемой подстроки. Если этот аргумент представляет собой строку, то она выступает в качестве текстового шаблона для поиска и не преобразуется в объект
RegExp
.
замена
Строка, определяющая текст замены, или функция, вызываемая для генерации текста замены. Подробности см. в подразделе «Описание».
Возвращаемое значение
Новая строка, в которой первое или все соответствия регулярному выражению regexp заменены строкой замена.
Описание
Метод replace выполняет операцию поиска и замены для строки. Он ищет в строке одну или несколько подстрок, соответствующих регулярному выражению regexp, и заменяет их значением аргумента замена. Если в regexp указан глобальный атрибут «g»,
replace
заменяет все найденные подстроки. В противном случае метод заменяет только первую найденную подстроку.
Параметр замена может быть либо строкой, либо функцией. Если это строка, то каждое найденное соответствие заменяется указанной строкой. Имейте в виду, что символ $ имеет особый смысл в строке замена. Как показано в следующей таблице, он показывает, что для замены используется строка, производная от найденного соответствия.
В стандарте ECMAScript v3 определено, что аргумент замена метода
replace
может быть функцией, а не строкой. В этом случае функция будет вызываться для каждого найденного соответствия, а возвращаемая ею строка будет использоваться в качестве текста для замены. Первый аргумент, передаваемый функции, представляет собой строку, соответствующую шаблону. Следующие за ним аргументы - это строки, соответствующие любым подвыражениям внутри шаблона. Таких аргументов может быть ноль или более. Следующий аргумент - это целое, указывающее позицию внутри строки, в которой было найдено соответствие, а последний аргумент функции замена - это сама строка.
Пример
Обеспечение правильного регистра букв в слове «JavaScript»:
text.replace(/JavaScript/i, "JavaScript");
Преобразование имени из формата «Doe, John» в формат «John Doe»:
name.replace(/(\w+)\s*,\s*(\w+)/, ”$2 $1");
Замена всех двойных кавычек двумя одинарными закрывающими и двумя одинарными открывающими кавычками:
text. гер1асе(/"([^"]*)"/g, "''$1''");
Перевод первых букв всех слов в строке в верхний регистр:
text.replace(/\b\w+\b/g, function(word) {
return word.substring(0, 1).toUpperCase +
word.substring(l);
}):
См. также
RegExp, RegExp.exec, RegExp.test, String.match, String.search; глава 10
String.search
поиск соответствия регулярному выражению
Синтаксис
строка.search(regexp)
Аргументы
regexp Объект
RegExp
, определяющий шаблон, который будет использоваться для поиска в строке. Если этот аргумент не является объектом
RegExp
, он сначала преобразуется путем передачи его конструктору