Відмінності між версіями «Регулярні вирази в JavaScript»
Стойка (обговорення • внесок) |
Стойка (обговорення • внесок) |
||
Рядок 63: | Рядок 63: | ||
<tr> | <tr> | ||
<td align=center> <strong>\</strong> </td> | <td align=center> <strong>\</strong> </td> | ||
− | <td> Для звичайних символів - робить їх спеціальними. Наприклад, вираз / s / шукає просто символ 's'. А якщо поставити \ перед s, то / \ s / вже позначає пробільний | + | <td> Для звичайних символів - робить їх спеціальними. Наприклад, вираз / s / шукає просто символ 's'. А якщо поставити \ перед s, то / \ s / вже позначає пробільний символ. І навпаки, якщо символ спеціальний, наприклад *, то \ зробить його просто звичайним символом "зірочка". Наприклад, / a * / шукає 0 або більше поспіль йдуть символів 'a'. Щоб знайти а із зірочкою 'a *' - поставимо \ перед спец. символом: / a \ * /. </td> |
</tr> | </tr> | ||
<tr> | <tr> | ||
Рядок 70: | Рядок 70: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | + | <td align=center><strong>$</strong></td> | |
<td><Позначає кінець вхідних даних. Якщо встановлений прапор багаторядкового пошуку, то також спрацює в кінці рядка. Наприклад, / t $ / не знайде 't' в "eater", але знайде - в "eat".</td> | <td><Позначає кінець вхідних даних. Якщо встановлений прапор багаторядкового пошуку, то також спрацює в кінці рядка. Наприклад, / t $ / не знайде 't' в "eater", але знайде - в "eat".</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | + | <td align=center><strong>*</strong></td> | |
− | <td> | + | <td> Позначає повторення 0 або більше разів. Наприклад, / bo * / знайде 'boooo' в "A ghost booooed" і 'b' в "A bird warbled", але нічого не знайде в "A goat grunted".</td> |
+ | </tr> | ||
+ | |||
+ | <tr> | ||
+ | <td align=center><strong>+</strong></td> | ||
+ | <td>Позначає повторення 1 або більше разів. Еквівалентно (1,). Наприклад, / a + / знайде 'a' в "candy" і все 'a' в "caaaaaaandy"./td> | ||
</tr> | </tr> | ||
<tr> | <tr> |
Версія за 10:44, 6 травня 2010
Регулярні вирази - це формальна мова пошуку і здійснення маніпуляцій з підрядка в тексті, заснований на використанні метасимволів (символів-джокерів, англ. Wildcard characters). По суті це рядок-зразок, що складається з символів і метасимволів і задає правило пошуку.
Регулярні вирази використовуються деякими текстовими редакторами та допоміжних інструментах для пошуку та підстановки тексту. Наприклад, за допомогою регулярних виразів можна задати шаблони, що дозволяють:
- Знайти всі послідовності символів «коробка» у будь-якому контексті, як то: «коробка», «король»;
- Знайти окремо слово «кіт» і замінити його на «кішка»;
- Знайти слово «кіт», якому передує слово «персидський» або «чеширский»;
- Прибрати з тексту всі пропозиції, в яких згадується слово кіт або кішка.
Регулярні вирази дозволяють задавати і набагато більш складні шаблони пошуку або заміни.
Об'єкт RegExp
Створення
/ / Повна форма запису
var expr = new RegExp(pattern [, flags]);
/ / Скорочена форма запису (літеральний формат)
var expr = /pattern/flags;
Аргументи
pattern - шаблон пошуку (текст регулярного виразу).
flags - способи пошуку за шаблонами:
- G - глобальний пошук (обробляються всі збіги з шаблоном пошуку);
- I - не розрізняти рядкові і заголовні букви;
- M - багаторядковий пошук.
Порядок вказівки прапорів не має значення.
Опис, приклади
Коли регулярний вираз створюється за допомогою конструктора new RegExp (...), необхідно пам'ятати, що зворотні слеш (\) повинні екранувати, наприклад:
varexpr = newRegExp('\\w', 'ig');
При використанні літерального формату, цього робити не потрібно:
var expr = /\w/gi;
Обидві запису еквівалентні. Перший варіант може знадобиться, якщо вам доведеться генерувати регулярне динамічно.
Регулярні вирази використовуються методами exec і test об'єкта RegExp і методами match, replace, search і split об'єкта String. Якщо нам потрібно просто перевірити, чи містить даний рядок підрядок, відповідну зразком, то використовуються методи test або search. Якщо ж нам необхідно витягти підрядок (або підрядка), відповідні зразком, то нам доведеться скористатися методами exec або match. Метод replace забезпечує пошук заданої підрядка і заміни її на інший рядок, а метод split дозволяє розбити рядок на кілька підрядка, грунтуючись на регулярному виразі або звичайною текстовому рядку.
Види символів
У регулярних виразах розрізняють наступні види символів:
Звичайні символи
A.. Z - англійські літери від A до z, малі й великі; 0 .. 9 - цифри; {} - фігурні дужки, крім випадків, коли вони складають групу виду (n, m) (де n і m - числа) і її варіації; = - рівне; < - Менше; > - Більше; - - Мінус; , - Кома; та ін.
Спеціальні символи
() - Круглі дужки; [] - Квадратні дужки; \ - Обраний слеш; . - Точка; ^ - Ступінь; $ - Знак долара; | - Вертикальна лінія; ? - Знак питання; + - Плюс.
Спецсимволи в регулярному виразі
Символ | Значення |
---|---|
\ | Для звичайних символів - робить їх спеціальними. Наприклад, вираз / s / шукає просто символ 's'. А якщо поставити \ перед s, то / \ s / вже позначає пробільний символ. І навпаки, якщо символ спеціальний, наприклад *, то \ зробить його просто звичайним символом "зірочка". Наприклад, / a * / шукає 0 або більше поспіль йдуть символів 'a'. Щоб знайти а із зірочкою 'a *' - поставимо \ перед спец. символом: / a \ * /. |
^ | Позначає початок вхідних даних. Якщо встановлений прапор багаторядкового пошуку ("m"), то також спрацьовує при початку нової рядка. Наприклад, / ^ A / не знайде 'A' в "an A", але знайде перші 'A' в "An A." |
$ | <Позначає кінець вхідних даних. Якщо встановлений прапор багаторядкового пошуку, то також спрацює в кінці рядка. Наприклад, / t $ / не знайде 't' в "eater", але знайде - в "eat". |
* | Позначає повторення 0 або більше разів. Наприклад, / bo * / знайде 'boooo' в "A ghost booooed" і 'b' в "A bird warbled", але нічого не знайде в "A goat grunted". |
+ | Позначає повторення 1 або більше разів. Еквівалентно (1,). Наприклад, / a + / знайде 'a' в "candy" і все 'a' в "caaaaaaandy"./td> |
String | якщо рядок містить правильне число (можливо з пробілами перед та / або після нього), то це число; NaN в іншому випадку |
Object | результат перетворення значення об'єкта за замовчуванням |