вторник, 20 июня 2017 г.

Sorax. 29. Класс RegExp

// RegExp принимает два параметра: регулярное выражение и флаги


// g - global, i - igrore case, m - multiline
var pattern = new RegExp("\w+", "gim");

// либо мы можем ипользовать литералы
var samePattern = /\w+/gim; // это тоже самое, что и в первом примере

// RegExp имеет смысл ипользовать, если нужно сформировать регулярное выражение на лету.
// Предпочтительней использовать литералы регулярных выражений.
var pattern = /\w+/gim,
    string = "How we survive is what make us who we are";
   
console.log(string.match(pattern)); // Array [ "How", "we", "survive", "is", "what", "make", "us", "who", "we", "are" ]

// search - этот метод удобен, когда нужно проверить, есть ли совпадения с регулярным выражением.
// search игнорирует флаг global и возвращает индекс первого мэтча
console.log(string.search(pattern)); // 0
// если в строке ничего не найдено, то вернется -1

console.log(string.split(' ')); // Array [ "How", "we", "survive", "is", "what", "make", "us", "who", "we", "are" ]
console.log(string.split(/[\s,]+/)); // Array [ "How", "we", "survive", "is", "what", "make", "us", "who", "we", "are" ]

///////
// каждый раз когда изменяется input будем обновлять output

var input = document.getElementsByClassName('input')[0],
    output = document.getElementsByClassName('output')[0];
   
/*
   Код со страницы index.html
    <input type="text" class="input"/>
    <p class="output"></p>
*/
// мы хотим, чтобы при написании в input слов в двойных скобках они чем-то заменялись
// напишем словарь
voc = {
    name: 'Sorax',
    title: 'JavaScript Tuts',
    resourse: 'YouTube'
};

// element.addEventListener( имя_события, обработчик, фаза)
input.addEventListener('keyup', function(){
    output.innerHTML = this.value.replace(
        /\{\{(\w*)\}\}/g, function(match, value) {
            return voc[value];
        }
    );
}, false);
/////


var pattern = /\w+/g;

// Через эти свойства мы можем посмотреть установлены ли соответсвующие флаги
console.log(pattern.global); // true
console.log(pattern.ignoreCase); // false
console.log(pattern.multiline); // false

// lastIndex используется для хранения индекса последнего результата
console.log(pattern.lastIndex); // 0

// test используется, чтобы выяснить, есть ли совпадения регулярного выражения со строкой
// У нас есть регулярка, которая мэтчит e-mail
var pattern = /\w+@\w+\.\w/,
    string = "Lorem inspum admin@site.ru";
   
console.log(pattern.test(string)); // true
// Метод test можно использовать при валидации форм.


// Метод exec выполняет поиск совпадений в указанной строке. Возвращает массив результатов или null
// Метод exec удобно использовать в цикле.
var pattern = /\w+/,
    string = "How we survive is what make us who we are";
console.log(pattern.exec(string)); // Array [ "How" ]

// Пример
var pattern = /\w+/g,
    string = "How we survive is what make us who we are",
    match;
while (match = pattern.exec(string)) {
    console.log(match[0] + "(Index: " + match.index + ")");
}

/*
Выводит:
Array [ "How" ]  main.js:69:1
How(Index: 0)  main.js:76:5
we(Index: 4)  main.js:76:5
survive(Index: 7)  main.js:76:5
is(Index: 15)  main.js:76:5
what(Index: 18)  main.js:76:5
make(Index: 23)  main.js:76:5
us(Index: 28)  main.js:76:5
who(Index: 31)  main.js:76:5
we(Index: 35)  main.js:76:5
are(Index: 38)  
*/

Комментариев нет:

Отправить комментарий