- Примірник об'єкта типу RegExp
- прапори
- Оператори
- фіксації
- нефіксіруемие групи
- функція test
- Javascript
- Javascript
- Javascript
- функція exec
- Javascript
- Javascript
- Javascript
Примірник об'єкта типу RegExp
new RegExp (pattern [, flags])якщо
регелярное вираз ЗАРАНЕЕ
відомо, то краще синтаксис литерала (/ test / i).Якщо ж регулярний вираз заздалегідь невідомо, то краще створювати регулярний вираз (в символьному рядку) за допомогою конструктора (new RegExp).
прапори
i ігнорування регістра при зіставленні
g глобальне зіставлення, на відміну від локального (за замовчуванням, збіг тільки з першим примірником шаблоном) допускає збігу з усіма примірниками шаблону
Оператори
Що Як Опісініе Використання i прапор робить рег. вираз не залежних від регістра / testik / ig прапор глобальний пошук / testik / gm прапор допускає зіставлення з багатьма рядками, які можуть бути отримані з textarea [] оператор класу символів зіставлення з набором символів [az] - будь-який символ в інтервалі від a до z ; ^ Оператор знак вставки крім [^ az] - будь-який символ КРІМ символів в інтервалі від a до z; - оператор дефіс вказуємо діапазон значень, включно [az] - будь-який символ в інтервалі від a до z; \ Оператор екранування екранує будь-який наступний символ \\ ^ оператор початку зіставлення зіставлення з шаблоном має відбутися на початку / ^ testik / g $ оператор кінця зіставлення зіставлення з шаблоном має відбутися в кінці / testik $ / g? оператор? робить символ необов'язковим / t? est / g + оператор + символ повинен прісутстовать одноразово або багаторазово / t + est / g + оператор + символ повинен прісутстовать одноразово або багаторазово / t + est / g * оператор * символ повинен прісутстовать одноразово або багаторазово або взагалі відсутні / t + est / g {} оператор {} задаємо фіксоване число повторень символу / t {4} est / g {,} оператор {,} задаємо число повторень символу в певних межах / t {4,9} est / gЗумовлені класи символів
Зумовлений член Зіставлення \ t горизонтальна табуляція \ n Переклад рядка. Будь-який символ, крім переведення існуючих рядки \ d Будь-яка десят-я цифра, що рівнозначно [0-9] \ D Будь-який символ, крім десят-я цифри, що рівнозначно [^ 0-9] \ w Будь-який символ (цифри, букви і знак підкреслення) що рівнозначно [A-Za-z0-9] \ W Будь-який символ, крім цифр, букв і знака підкреслення, що рівнозначно [^ A-Za-z0-9] \ s Будь-який символ пробілу \ S Будь-який символ, крім пробілу \ b Кордон слова \ B НЕ Кордон слова, а його внутр. частинаГрупування ()
Якщо оператор, наприклад, + (/ (abcd) + /) потрібно застосувати до групи члеров, то можна скористатися круглими дужками ().
фіксації
Частина регулярного виразу, укладена в круглі дужки (), називиется фіксацією.
Зворотні посилання на фіксації позначаються зворотною косою межею (\) і номером фіксації, наприклад, \ 1, \ 2.
Розглянемо наступний приклад:
/ ^ ([Abc]) k \ 1 / \ 1 це не будь-який символ з a, b, c.
\ 1 це навіть дуже символ, який ініціює збіг з першим символом. Тобто символ співпав з \ 1 невідомий до дозволу регулярного виразу.
нефіксіруемие групи
Дужки () використовуються в 2-х випадках: для групування і для позначення фіксацій. Але бувають ситуації, коли нам потрібно використовувати () тільки для групування, так як фіксація не потрібно, крім того, прибираючи зайві фіксації ми полегшуємо роботу механізму обробки регулярних виразів.
Отже, щоб запобігти фіксацію перед відкриває круглою дужкою необхідно поставити:?:
str = "<div class = 'test'> <b> Hello </ b> <i> world! </ i> </ div>"; found = str.match (/ <(?: \ /?) (?: \ w +) (?: [^>] *?)> / i); console.log ( "found without fix:", found); // [ "<div class = 'test'>"]Приклад на jsfiddle.net
функція test
Regexp.test ([str])Функція test перевіряє, чи є збіг регулярного виразу з рядком (str). Повертає або true або false.
Приклад використання:
Javascript
function codeF (str) {return /^\d{5}-\d{2}/.test(str); } //Console.log(codeF('12345-12ss ')); // true //console.log(codeF('1245-12ss ')); // falseфункція match
str.match (regexp)Функція match повертає масив значень або null, якщо збігів, не знайдено. Відзначте: якщо в регулярному виразі відсутня прапор g (для виконання глобального пошуку), то метод match поверне перший збіг в рядку, при цьому, як видно з прикладу, в масив збігів потрапляють ФІКСАЦІЇ (частина регулярного виразу укладена в круглі дужки).
Javascript
str = "За інформацією зверніться: Глава 3.4.5.1"; re = / глава (\ d + (\. \ d) *) / i // з фиксациями (без глобального прапорця) found = str.match (re) console.log (found); // [ "Глава 3.4.5.1", "3.4.5.1", ".1"]Якщо ж надати методу match () глобальне регулярний вираз (з прапорцем g), то буде повернутий також масив, але з ГЛОБАЛЬНИМИ збігами. Тобто зафіксовані результати не повертаються.
Javascript
str = "За інформацією зверніться: Глава 3.4.5.1, Глава 7.5"; re = / глава (\ d + (\. \ d) *) / ig // без фіксацій - глобально found = str.match (re) console.log (found); // [ "Глава 3.4.5.1", "Глава 7.5"]Приклад на jsfiddle.net
функція exec
regexp.exec (str)Функція exec перевіряє, чи є збіг регулярного виразу з рядком (str). Повертає масив результатів (з фиксациями) або null. При кожному наступному виклику методу exec (наприклад, при використанні while) відбувається (за рахунок автоматичного оновлення при виконанні exec індексу кінця останнього пошуку lastIndex) перехід до наступного глобальному збігом (якщо у казан прапорець g).
Javascript
var html = "<div class = 'test'> <b> BAM! </ b> <em> BUM! </ em> </ div>"; var reg = / <(\ /?) (\ w +) ([^>] *?)> / g; //console.log(reg.exec(html)); // [ "<div class = 'test'>", "", "div", "class = 'test'"] while ((match = reg.exec (html))! == null) {console.log (reg.exec (html)); } / * [ "<B>", "", "b", ""] [ "<em>", "", "em", ""] [ "</ div>", "/", " div "," "] * /Без глобального прапорця методи match і exec працюють ідентично. Тобто повертають масив з першим глобальним збігом і фиксациями.
Javascript
// match var html = "<div class = 'test'> <b> BAM! </ B> <em> BUM! </ Em> </ div>"; var reg = / <(\ /?) (\ w +) ([^>] *?)> /; // без глобального console.log (html.match (reg)); // [ "<div class = 'test'>", "", "div", "class = 'test'"] // exec var html = "<div class = 'test'> <b> BAM! < / b> <em> BUM! </ em> </ div> "; var reg = / <(\ /?) (\ w +) ([^>] *?)> /; // без глобального console.log (reg.exec (html)); // [ "<div class = 'test'>", "", "div", "class = 'test'"]функція replace
str.replace (regexp, newSubStr | function)- regexp - рег. вираз;
- newSubStr - рядок, на яку змінюється знайдене вираз в тексті;
- function - викликається для кожного виявленого збігу зі змінним списком параметрів (нагадаємо, що при глобальному пошуку в рядку виявляються всі екземпляри збіги з шаблоном).
Значення, що повертається даної функції служить в якості заміни.
Параметри функції:
- 1 - Повна яка збіглася подстрока.
- 2 - Значення дужкових груп (фіксацій).
- 3 - Індекс (позиція) поєднання в заданій стрічці.
- 4 - Вихідна рядок.
Mетод не змінює викликає рядок, а повертає нову, після заміни збігів. Щоб зробити глобальний пошук і заміну, використовуйте regexp c прапором g.
"GHGHGHGTTTT" .replace (/ [AZ] / g, "K"); // "KKKKKKKKKKK"Javascript
function upLetter (allStr, letter) {return letter.toUpperCase (); } Var res = "border-top-width" .replace (/ - (\ w) / g, upLetter); console.log (res); // borderTopWidthЗа допомогою методу replace можна отримати посилання на фіксації. У функцію другим параметром передається номер фіксації; використовується синтаксис виду: $ 1, $ 2, $ 3 і т.д.
Javascript
console.log ( "GHGHGHGTTTT" .replace (/ ([AZ]) / g, "$ 1"). toLowerCase ()); // ghghghgttttОператор?Обить символ необов'язковим / t?
Gt;] *?
Gt;] *?
Gt;] *?
Gt;] *?