Наличие подстроки в строке (метод test)
Этот метод возвращает true, если хотя бы одно совпадение найдено и false, если не было найдено ни одного совпадения. Но в отличии от методов, рассмотренных в предыдущих статьях, у test надо ставить регулярное выражение до названия метода через точку, а единственный параметр в скобках - это строка, в которой происходит поиск. Приведём пример использования:var a = 'Тише, мыши, кот на крыше';
console.log( /ше/.test(a) ); // вернёт true
console.log( /сыр/.test(a) ); // вернёт false
Функция test применяется довольно часто для валидации значений полей в формах. К примеру, для проверки правильно ли введён мэйл адрес. Причём проверяется значение от начала до конца, поэтому ставятся знаки ^ и $:
var a = 'support@mousedc.ru';
console.log( /^[a-zA-Z-.]+@[a-z]+\.[a-z]{2,3}$/.test(a) ); // вернёт true
Получить часть подстроки (метод match)
Метод test всего лишь говорит есть или нет подстроки в строке. Но есть ещё метод match, который возвращает массив из подстрок, найденных по регулярному выражению. Посмотрим на практике, что это значит:var a = 'Тише, мыши, кот на крыше';
console.log( a.match(/..ш./g) );
В результате выполнения такого кода в консоли будет распечатан массив, который содержит три найденных совпадения:
Array ( [0] => Тише [1] => мыши [2] => рыше )
Замена в строке и карманы (метод replace)
Метод replace умеет использовать так называемые "карманы". То есть есть возможность обратиться к найденным вариациям внутри метода. Эти карманы появляются, если использовать скобки ( ). Их можно подставлять во второй параметр функции, используя порядковый номер и знак $. Таким образом можно заменять части строки так, что содержащиеся в кармане части будут подставляться на замену.var a = 'Сыр, мышь, кот';
console.log( a.replace(/([а-я]+), ([а-я]+), ([а-я]+)/i, '$3, $1, $2') );
В первый карман попадёт слово "Сыр", во второй "мышь", а в третий "кот". По правилу '$3, $1, $2' результат будет иметь содержимое из 3 кармана, затем запятую и пробел, потом содержимое 1 кармана с запятой и пробелом, и в конце содержимое 2 кармана. Результат будет такой:
кот, Сыр, мышь
Напомним, что регулярными выражениями необходимо пользоваться только в том случае, если нет никакого другого способа решения.
Ошибки в регулярных выражениях - это очень частое явление. Поэтому прибегайте к этому инструменту только в самых-самых безвыходных ситуациях, когда всё остальное уже опробовано.
Можно обращаться к содержимому кармана непосредственно в регулярном выражении. То есть в карман заносятся данные и тут же достаются. Для этого необходимо поставить слеш \ и затем номер кармана непосредственно в регулярном выражении:
Ошибки в регулярных выражениях - это очень частое явление. Поэтому прибегайте к этому инструменту только в самых-самых безвыходных ситуациях, когда всё остальное уже опробовано.
var a = 'Сыр, сыыр, сыыыр';
console.log( a.replace(/([а-я]+)\1/gi, '!') );
В приведённом примере выражение "/([а-я]+)\1/" сначала заносит в карман любую букву, а котом достаёт её же и ставит после найденной. Эффект получается такой, как будто мы находим повторяющуюся два раза букву и делаем её замену:
Сыр, с!р, с!ыр
Позитивный и негативный просмотр
Методом replace найденное выражение заменяется полностью на второй параметр. Но что делать, если нам не надо заменять всё найденное, а только часть? Для этого есть позитивный и негативный просмотр.Представьте, что нужно заменить слово, не заменяя первую букву. Приведём пример реализации:
var a = 'Тише, мыши, кот на крыше';
console.log( a.replace(/(?!к)от/gi, 'отята') );
Результат будет такой:
Тише, мыши, котята на крышеХоть буква "к" и стоит в регулярном выражении, но она стоит в специальных скобках (?!к), которые проверяют наличие буквы, но не подставляют её на замену. Такие скобки называются негативным просмотром. Можно сделать позитивный просмотр и в конце строки:
var a = 'Тише, мыши, кот на крыше';
console.log( a.replace(/крыш(?=е)/gi, 'сыр') );
Позитивный просмотр (?=е) проверяет, есть ли в конце строки буква "е". Происходит замена и получается такая строка:
Тише, мыши, кот на сыре
Это конец темы регулярных выражений. Поэтому ещё раз напомним, что регулярными выражениями необходимо пользовать только в том случае, если нет никакого другого выхода.
Ошибки в регулярных выражениях - это очень частое явление. Поэтому прибегайте к этому инструменту только в самых-самых безвыходных случаях, когда не остаётся ничего другого.
Ошибки в регулярных выражениях - это очень частое явление. Поэтому прибегайте к этому инструменту только в самых-самых безвыходных случаях, когда не остаётся ничего другого.