При создании регулярного выражения мы можем указать дополнительных опции поиска:
- i (ignore case). Не различать строчные и прописные буквы.
- g (global search). Глобальный поиск всех вхождений образца.
- m (multiline). Многострочный поиск.
- Любые комбинации этих трех опций, например ig или gim.
Поддержка: Опция "m" поддерживается с версии 5.5.
Опция "m" не поддерживается. Вместо нее используется
статическое свойство multiline объекта RegExp.
Приведем несколько примеров. Поскольку регулярные выражения различают строчные и прописные буквы, следующий сценарий
var s = "Изучаем язык JavaScript";
var re = /JAVA/;
var result = re.test(s) ? "' " : "' не ";
document.write("Строка '" + s + result + "соответствует образцу " + re);
выведет в окно обозревателя текст:
Строка 'Изучаем язык JavaScript' не соответствует образцу /JAVA/
Если мы теперь заменим вторую строку примера на
var re = /JAVA/i;
, то на экран будет выведен текст:
Строка 'Изучаем язык JavaScript' соответствует образцу /JAVA/i
Теперь рассмотрим опцию глобального поиска. Она обычно применяется методом
replace при поиске образца и замены найденной подстроки на новую. Дело в том, что по умолчанию этот метод производит замену только первой найденной подстроки и возвращает полученный результат. Рассмотрим следующий сценарий:
var s = "Мы пишем сценарии на JavaScript, " +
"но JavaScript - не единственный сценарный язык.";
var re = /JavaScript/;
document.write(s.replace(re, "VBScript"));
Он выводит в окно обозревателя текст, который явно не соответствует желаемому результату:
Мы пишем сценарии на VBScript, но JavaScript - не единственный сценарный язык.
Для того, чтобы все вхождения строки "JavaScript" были заменены на "VBScript", мы должны изменить значение регулярного выражения на
var re = /JavaScript/g;
. Тогда результирующая строка будет иметь вид:
Мы пишем сценарии на VBScript, но VBScript - не единственный сценарный язык.
Наконец, опция многострочного поиска позволяет проводить сопоставление с образцом строкового выражения, состоящего из нескольких строк текста, соединенных символами разрыва строки. По умолчанию, сопоставление с образцом прекращается, если найден символ разрыва строки. Данная опция преодолевает указанное ограничение и обеспечивает поиск образца по всей исходной строке. Она также влияет на интерпретацию некоторых специальных символов в регулярных выражениях, а именно:
- Обычно символ ^ сопоставляется только с первым элементом строки. Если же опция многострочного поиска включена, то он также сопоставляется с любым элементом строки, которому предшествует символ разрыва строки.
- Обычно символ $ сопоставляется только с последним элементом строки. Если же опция многострочного поиска включена, то он также сопоставляется с любым элементом строки, который является символом разрыва строки.