JavaScript. Подробное руководство, 6-е издание, стр. 450

Пример

Следующий фрагмент реализует глобальный поиск и находит все числа в строке:

<b>&quot;1 plus 2 equals 3&quot;.match(/\d+/g) // Вернет [&quot;1&quot;, &quot;2&quot;, &quot;3”]</b>

Следующий фрагмент реализует неглобальный поиск и использует более сложное регулярное выражение с несколькими подвыражениями. Он находит URL-адрес, а подвыражения регулярного выражения соответствуют протоколу, хосту и пути в URL:

<b>var url = /(\w+):\/\/([\w.]+)\/(\S*)/;</b>

<b>var text = &quot;Visit my home page at </b><a href="http://www.isp.com/~david"><b>http://www.isp.com/~david</b></a><b>&quot;;</b>

<b>var result = text.match(url);</b>

<b>if (result != null) {</b>

<b>  var fullurl = result[0];  // Содержит &quot;</b><a href="http://www.isp.com/~david%e2%80%9d"><b>http://www.isp.com/~david”</b></a>

<b>  var protocol = result[1]; </b><div class="fb2-code"><code>&lt;b&gt;// Содержит &amp;quot;http&amp;quot;&lt;/b&gt;</code></div>

<b>  var host = result[2];     </b><div class="fb2-code"><code>&lt;b&gt;// Содержит &amp;quot;&lt;/b&gt;&lt;a href=&quot;http://www.isp.com/&quot;&gt;&lt;b&gt;www.isp.com&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&amp;quot;&lt;/b&gt;</code></div>

<b>  var path = result[3];     </b><div class="fb2-code"><code>&lt;b&gt;// Содержит &amp;quot;~david&amp;quot;&lt;/b&gt;</code></div>

<div class="fb2-code"><code>&lt;b&gt;}&lt;/b&gt;</code></div>

См. также

RegExp, RegExp.ехес(), RegExp.test(), String.replace(), String.search(); глава 10

String.replace()

заменяет подстроку (подстроки), соответствующую регулярному выражению

Синтаксис

<b>строка.replace(regexp, замена)</b>

Аргументы

regexp Объект

<b>RegExp</b>
, определяющий шаблон заменяемой подстроки. Если этот аргумент представляет собой строку, то она выступает в качестве текстового шаблона для поиска и не преобразуется в объект
<b>RegExp</b>
.

замена Строка, определяющая текст замены, или функция, вызываемая для генерации текста замены. Подробности см. в подразделе «Описание».

Возвращаемое значение

Новая строка, в которой первое или все соответствия регулярному выражению regexp заменены строкой замена.

Описание

Метод replace() выполняет операцию поиска и замены для строки. Он ищет в строке одну или несколько подстрок, соответствующих регулярному выражению regexp, и заменяет их значением аргумента замена. Если в regexp указан глобальный атрибут «g»,

<b>replace()</b>
заменяет все найденные подстроки. В противном случае метод заменяет только первую найденную подстроку.

Параметр замена может быть либо строкой, либо функцией. Если это строка, то каждое найденное соответствие заменяется указанной строкой. Имейте в виду, что символ $ имеет особый смысл в строке замена. Как показано в следующей таблице, он показывает, что для замены используется строка, производная от найденного соответствия.

JavaScript. Подробное руководство, 6-е издание - i_076.jpg

В стандарте ECMAScript v3 определено, что аргумент замена метода

<b>replace()</b>
может быть функцией, а не строкой. В этом случае функция будет вызываться для каждого найденного соответствия, а возвращаемая ею строка будет использоваться в качестве текста для замены. Первый аргумент, передаваемый функции, представляет собой строку, соответствующую шаблону. Следующие за ним аргументы - это строки, соответствующие любым подвыражениям внутри шаблона. Таких аргументов может быть ноль или более. Следующий аргумент - это целое, указывающее позицию внутри строки, в которой было найдено соответствие, а последний аргумент функции замена - это сама строка.

Пример

Обеспечение правильного регистра букв в слове «JavaScript»:

<b>text.replace(/JavaScript/i, &quot;JavaScript&quot;); </b>

Преобразование имени из формата «Doe, John» в формат «John Doe»:

<b>name.replace(/(\w+)\s*,\s*(\w+)/, ”$2 $1&quot;); </b>

Замена всех двойных кавычек двумя одинарными закрывающими и двумя одинарными открывающими кавычками:

<b>text. гер1асе(/&quot;([^&quot;]*)&quot;/g, &quot;''$1''&quot;); </b>

Перевод первых букв всех слов в строке в верхний регистр:

<b>text.replace(/\b\w+\b/g, function(word) { </b>

<b>              return word.substring(0, 1).toUpperCase() +</b>

<b>              word.substring(l); </b>

<b>}): </b>

См. также

RegExp, RegExp.exec(), RegExp.test(), String.match(), String.search(); глава 10

String.search()

поиск соответствия регулярному выражению

Синтаксис

<b>строка.search(regexp)</b>

Аргументы

regexp Объект

<b>RegExp</b>
, определяющий шаблон, который будет использоваться для поиска в строке. Если этот аргумент не является объектом
<b>RegExp</b>
, он сначала преобразуется путем передачи его конструктору
<b>RegExp().</b>

Возвращаемое значение

Позиция начала первой подстроки в строке, соответствующей выражению regexp или -1, если соответствие не найдено.

Описание

Метод

<b>search()</b>
ищет подстроку в строке, соответствующую регулярному выражению regexp, и возвращает позицию первого символа найденной подстроки или -1, если соответствие не найдено.

Метод не выполняет глобального поиска, игнорируя флаг «g». Он также игнорирует свойство

<b>regexp.lastlndex</b>
и всегда выполняет поиск с начала строки, следовательно, всегда возвращает позицию первого соответствия, найденного в строке.