Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Регулярные выражения JavaScript.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
210.43 Кб
Скачать

Строковые методы, поиск и замена

Следующие методы работают с регулярными выражениями из строк.

Все методы, кроме replace, можно вызывать как с объектами типа regexp в аргументах, так и со строками, которые автоматом преобразуются в объекты RegExp.

Так что вызовы эквивалентны:

var i = str.search(/\s/)

var i = str.search("\\s")

При использовании кавычек нужно дублировать \ и нет возможности указать флаги. Если регулярное выражение уже задано строкой, то бывает удобна и полная форма

var regText = "\\s"

var i = str.search(new RegExp(regText, "g"))

Метод search(regexp)

Возвращает индекс регулярного выражения в строке, или -1.

Если Вы хотите знать, подходит ли строка под регулярное выражение, используйте метод search(аналогично RegExp-методы test). Чтобы получить больше информации, используйте более медленный метод match(аналогичный методу RegExp exec).

Этот пример выводит сообщение, в зависимости от того, подходит ли строка под регулярное выражение.

1

function testinput(re, str){

2

   if (str.search(re) != -1)

3

      midstring = " contains ";

4

   else

5

      midstring = " does not contain ";

6

   document.write (str + midstring + re.source);

7

}

Метод match(regexp)

Если в regexp нет флага g, то возвращает тот же результат, чтоregexp.exec(string).

Если в regexp есть флаг g, то возвращает массив со всеми совпадениями.

Чтобы просто узнать, подходит ли строка под регулярное выражение regexp, используйте regexp.test(string).

Если Вы хотите получить первый результат - попробуйте regexp.exec(string).

В следующем примере match используется, чтобы найти "Chapter", за которой следует 1 или более цифр, а затем цифры, разделенные точкой. В регулярном выражении есть флаг i, так что регистр будет игнорироваться.

1

str = "For more information, see Chapter 3.4.5.1";

2

re = /chapter (\d+(\.\d)*)/i;

3

found = str.match(re);

4

alert(found);

Скрипт выдаст массив из совпадений:

  • Chapter 3.4.5.1 - полностью совпавшая строка

  • 3.4.5.1 - первая скобка

  • .1 - внутренняя скобка

Следующий пример демонстрирует использование флагов глобального и регистронезависимого поиска с match. Будут найдены все буквы от А до Е и от а до е, каждая - в отдельном элементе массива.

1

var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

2

var regexp = /[A-E]/gi;

3

var matches = str.match(regexp);

4

document.write(matches);

5

 

6

// matches = ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']