Материал: Начальные основы программирования на языке JavaScript. методические указания к выполнению контрольных работ. Сергеев М.Ю

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

помощью метода indexOf(). Можно сделать то же самое с помощью регулярного выражения:

var myRegEx = /быть/;

// не надо заключать в

кавычки

 

var quote = 'быть или не быть.';

var foundPosition = quote.search(myRegEx); // возвращает

0

Если search() находит совпадение, он возвращает позицию первой совпавшей буквы, а если не находит, то возвращает -1. Так, в примере, приведенном выше, переменная foundPosition равна 0, поскольку «быть» начинается с самого начала строки (с первой буквы).

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

(.) означает отдельный знак, любой; \w соответствует любой букве или числу (но не пробелам или символам $ или %). В табл. 7 приведены символы, наиболее часто используемые при поиске по шаблонам.

Таблица 7 Символы, используемые в регулярных выражениях

Символ

Значение

.

Один любой символ. Это может быть буква, число,

 

пробел или другой знак.

\w

Любой знак, который может входить в слово. Это

 

может быть буква (в обоих регистрах, цифра от 0 до

 

9, знак подчеркивания (_).

 

 

\W

Любой знак, который НЕ может входить в слово. То

 

есть любые знаки, не соответствующие \w.

\d

Любая цифра от 0 до 9.

 

29

 

Продолжение табл. 7

\D

Любой символ, кроме цифры. Протовоположно \d.

\s

Пробел, знак табуляции, знак возврата каретки и знак

 

новой строки.

\ S

Все знаки, кроме знака табуляции, знака возврата ка-

 

ретки и знака новой строки. Противоположно \s.

^

Начало строки. Полезно, если обязательным услови-

 

ем является то, что впереди искомой подстроки нет

 

символов (то есть она начинает строку).

$

Конец строки. Полезно, если обязательным условием

 

является то, что искомая подстрока должна заканчи-

 

вать строку. К примеру, /com$/ соответствует под-

 

строка «com», но только когда она занимает послед-

 

ние три символа строки. То есть /com$/ соответствует

 

подстроке «com» в строке «infocom», но не в строке

 

«communication».

\b

Пробел, начало строки, конец строки, любой другой

 

символ, не являющийся буквой или цифрой (к приме-

 

ру, +,= или'). Можно использовать \ b для обозначе-

 

ния начала и конца слова, даже если слово находится

 

в начале или конце строки.

[ ]

Любой символ из помещенных в скобки. К

 

примеру,[aeoun] совпадет с любой из букв в квадрат-

 

ных скобках. Для обозначения последовательностей

 

символов можно использовать тире. Так, запись [a-z]

 

ссылается на любую букву латинского алфавита в

 

нижнем регистре. Запись [0-9] ссылается на цифры,

 

она аналогична \d.

[ ^ ]

Все символы, исключая те, которые помещены в

 

скобки. К примеру, [^aeuioAEUIO] ссылается на все

 

символы, кроме гласных букв. [^0-9] ссылается на все

 

символы, не являющиеся цифрами (аналогично \D).

30

Окончание табл. 7

| Сошлется на символ, который справа от |, или же на символ слева. К примеру, a|b сошлется или на a, или на b, но не на оба сразу.

\Используется, чтобы «блокировать» служебные символы регулярных выражений (\, *, ., / и т. д.). Это может быть необходимо, если подобный символ должен быть найден в строке. К примеру, «.» в синтаксисе регулярных выражений означает «любой символ» поэтому, если вы хотите включить символ точки в поиск, его нужно «блокировать»: «\.».

Группирование частей шаблона

Можно использовать круглые скобки, чтобы создавать в шаблоне подгруппы. Эти подгруппы очень удобны (если один из символов табл. 8 используется), чтобы найти совпадения со многими различными строками по одному и тому же шаблону.

 

Таблица 8

 

Символы для обозначения совпадений

Символ

Совпадает

?

Ноль или одно появление предыдущего символа. Он

 

необязателен, но если он имеется, то должен быть

 

только в одном экземпляре. Например, регулярное

 

выражение colou?r совпадет и с color, и с colour, но не

 

с colouur

+

Одно или больше появлений предыдущего символа.

 

Он должен появиться как минимум один раз

*

Ноль или более появлений предшествующего симво-

 

ла. Он необязателен и может являться любое количе-

 

ство раз. Например, .* совпадает с любым количест-

 

вом знаков

{n}

Точное число появлений предыдущего символа. На-

 

пример, \d{3} совпадает только с 3 числами в строке

 

31

Продолжение табл. 8

{n,} n и более появлений предшествующего символа. Например, а{2,} совпадет с буквой a два и более раз: с сочетанием аа в слове aardvark или аааа в слове aaaahhhh

{n,m} Предшествующий символ появляется минимум n раз, но не более m раз. То есть \d{3,4} совпадет с 3 или 4 числами в строке (но не с двумя и не с пятью числами в строке)

Совпадение с шаблоном

Метод search(), описанный на ранее, – один из способов узнать, содержит ли строка шаблон регулярного выражения. Метод match() работает по-другому. Возможно использовать его со строкой, не только чтобы проверить, существует ли в данной строке шаблон – также можно извлечь этот шаблон, чтобы позже использовать его в других скриптах.

Следующий код находит и извлекает URL с использова-

нием match():

//Создание переменной, содержащей строку с URL var text='Мой web-сайт это www.mysite.com';

//Создание регулярного выражения '

var urlRegex = /((\bhttps?:\/\/) | (\bwww\.))\S*/

// Нахождение совпадения с регулярным выражением в строке

var url = text.match(urlRegex); alert (url [0] ) ; // www.mysite.com

Сначала код создает переменную, в которой сохраняется строка, включающая URL www.mysite.com. Далее задается регулярное выражение для поиска URL. Наконец, к строке применяется метод match(). Функция match() – это метод для строк, поэтому все начинается с имени переменной, содержащей строку, потом к ней добавляется точка, а затем match().

32

Таким образом методу match() передается регулярное выражение для поиска совпадения.

В примере, данном выше, переменная url содержит результат совпадения. Если шаблон регулярного выражения не найден в строке, в результате выдается специальное значение JavaScript, называемое null. Если совпадение происходит, то скрипт возвращает массив, первым значением которого является совпавший текст. Например, здесь переменная url содержит массив, и в первом элементе массива записан совпавший с шаблоном текст. В данном случае url[0] содержит www.mysite.com.

Совпадение с каждым образцом шаблона

Метод match() работает двумя различными способами в зависимости от того, как было настроено регулярное выражение. В примере, приведенном выше, метод возвращает массив с первым образцом совпавшего текста. Так, если имеется длинная строка, содержащая много URL, возвращается только первый найденный URL.

Однако также можно задействовать свойство регулярного выражения global для поиска в строке более чем одного совпадения.

Поиск становится глобальным, когда добавляется g в конец регулярного выражения.

var urlRegex = /((\bhttps?:\/\/)|(\bwww\.))\S*/g

Следует обратить внимание, что g находится за пределами / (используемого для закрывания шаблона). Это регулярное выражение осуществляет глобальный поиск. Когда оно используется с методом match(), то ищет все совпадения в строке и возвращает массив совпавших фрагментов текста.

Возможно переписать код из предыдущего примера, используя глобальный поиск, следующим образом:

33

Источник: https://studfile.net/preview/16564719/