RegExp
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
* Some parts of this feature may have varying levels of support.
Сводка
ÐонÑÑÑÑкÑÐ¾Ñ RegExp ÑоздаÑÑ Ð¾Ð±ÑÐµÐºÑ ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекÑÑа Ñ Ñаблоном.
Ðведение в Ñо, ÑÑо пÑедÑÑавлÑÑÑ Ñобой ÑегÑлÑÑнÑе вÑÑажениÑ, ÑиÑайÑе в главе «РегÑлÑÑнÑе вÑÑажениÑ» в ÑÑководÑÑве по JavaScript.
ÐнÑеÑакÑивнÑй пÑимеÑ
const regex1 = /\w+/;
const regex2 = new RegExp("\\w+");
console.log(regex1);
// Expected output: /\w+/
console.log(regex2);
// Expected output: /\w+/
console.log(regex1 === regex2);
// Expected output: false
СинÑакÑиÑ
ÐÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ñ ÐºÐ°Ðº лиÑеÑалÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ, Ñак и запиÑÑ ÑеÑез конÑÑÑÑкÑоÑ:
/pattern/flags new RegExp(pattern, flags)
ÐаÑамеÑÑÑ
pattern-
ТекÑÑ ÑегÑлÑÑного вÑÑажениÑ.
flags-
ÐÑли опÑеделÑн, Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð»ÑбÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ð½Ð¸Ð¶ÐµÑледÑÑÑÐ¸Ñ Ð·Ð½Ð°Ñений:
g-
глобалÑное ÑопоÑÑавление
i-
игноÑиÑование ÑегиÑÑÑа пÑи ÑопоÑÑавлении
m-
ÑопоÑÑавление по неÑколÑким ÑÑÑокам; ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð°Ñала и конÑа (^ и $) наÑинаÑÑ ÑабоÑаÑÑ Ð¿Ð¾ неÑколÑким ÑÑÑокам (Ñо еÑÑÑ, пÑоиÑÑ Ð¾Ð´Ð¸Ñ ÑопоÑÑавление Ñ Ð½Ð°Ñалом или конÑом каждой ÑÑÑоки (ÑÑÑоки ÑазделÑÑÑÑÑ Ñимволами \n или \r), а не ÑолÑко Ñ Ð½Ð°Ñалом или конÑом вÑей вводимой ÑÑÑоки)
y-
«липкий» поиÑк; ÑопоÑÑавление в Ñелевой ÑÑÑоке наÑинаеÑÑÑ Ñ Ð¸Ð½Ð´ÐµÐºÑа, на коÑоÑÑй ÑказÑÐ²Ð°ÐµÑ ÑвойÑÑво
lastIndexÑÑого ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ (и не пÑÑаеÑÑÑ ÑопоÑÑавиÑÑÑÑ Ñ Ð»Ñбого более позднего индекÑа).
ÐпиÑание
СÑÑеÑÑвÑÐµÑ Ð´Ð²Ð° ÑпоÑоба ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑекÑа RegExp: лиÑеÑалÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð¸ иÑполÑзование конÑÑÑÑкÑоÑа. ÐÑи запиÑи ÑÑÑок паÑамеÑÑÑ Ð² лиÑеÑалÑной запиÑи не иÑполÑзÑÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÐºÐ°Ð²ÑÑек, в Ñо вÑÐµÐ¼Ñ ÐºÐ°Ðº паÑамеÑÑÑ ÑÑнкÑии-конÑÑÑÑкÑоÑа иÑполÑзÑÑÑ ÐºÐ°Ð²ÑÑки. Так ÑÑо ÑледÑÑÑие вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑоздаÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑегÑлÑÑнÑе вÑÑажениÑ:
/ab+c/i;
new RegExp("ab+c", "i");
ÐиÑеÑалÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð¾Ð±ÐµÑпеÑÐ¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑÐ¸Ñ ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñи вÑÑиÑлении вÑÑажениÑ. ÐÑполÑзÑйÑе лиÑеÑалÑнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ ÐµÑли ÑегÑлÑÑное вÑÑажение бÑÐ´ÐµÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½Ð½Ñм. ÐапÑимеÑ, еÑли Ð²Ñ Ð¸ÑполÑзÑеÑе лиÑеÑалÑнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð´Ð»Ñ ÐºÐ¾Ð½ÑÑÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑегÑлÑÑного вÑÑажениÑ, иÑполÑзÑемого в Ñикле, ÑегÑлÑÑное вÑÑажение не бÑÐ´ÐµÑ Ð¿ÐµÑекомпилиÑоваÑÑÑÑ Ð½Ð° каждой иÑеÑаÑии.
ÐонÑÑÑÑкÑÐ¾Ñ Ð¾Ð±ÑекÑа ÑегÑлÑÑного вÑÑажениÑ, напÑимеÑ, new RegExp('ab+c'), обеÑпеÑÐ¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑÐ¸Ñ ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑполнениÑ. ÐÑполÑзÑйÑе ÑÑнкÑиÑ-конÑÑÑÑкÑоÑ, еÑли Ð²Ñ Ð·Ð½Ð°ÐµÑе, ÑÑо Ñаблон ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð¼ÐµÐ½ÑÑÑÑÑ Ð¸Ð»Ð¸ еÑли Ð²Ñ Ð½Ðµ знаеÑе Ñаблон и полÑÑаеÑе его из внеÑниÑ
иÑÑоÑников, напÑимеÑ, из полÑзоваÑелÑÑкого ввода.
ÐÑи иÑполÑзовании ÑÑнкÑии-конÑÑÑÑкÑоÑа Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ иÑполÑзоваÑÑ Ð¾Ð±ÑÑнÑе пÑавила ÑкÑаниÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑÑÑÐ¾ÐºÐ°Ñ (пÑедваÑÑÑÑ ÑпеÑиалÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ñимволом обÑаÑного ÑлеÑа «\»). ÐапÑимеÑ, ÑледÑÑÑие вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑквиваленÑнÑ:
var re = /\w+/;
var re = new RegExp("\\w+");
ÐнаÑение ÑпеÑиалÑнÑÑ Ñимволов в ÑегÑлÑÑнÑÑ Ð²ÑÑажениÑÑ
- СимволÑнÑе клаÑÑÑ
- ÐабоÑÑ Ñимволов
- ÐÑаниÑÑ
- ÐÑÑппиÑовка и обÑаÑнÑе ÑÑÑлки
- ÐванÑиÑикаÑоÑÑ
| СимволÑнÑе клаÑÑÑ | ||
|---|---|---|
| Символ | ÐнаÑение | |
. |
(ТоÑка, деÑÑÑиÑÐ½Ð°Ñ Ð·Ð°Ð¿ÑÑаÑ) ÑопоÑÑавлÑеÑÑÑ Ñ Ð»ÑбÑм Ñимволом
за иÑклÑÑением Ñимволов новой ÑÑÑоки:
ÐбÑаÑиÑе внимание, ÑÑо Ñлаг многоÑÑÑоÑноÑÑи
ÐапÑимеÑ, Ñаблон |
|
\d |
СопоÑÑавлÑеÑÑÑ Ñ Ñимволом ÑиÑÑÑ Ð² базовом лаÑинÑком алÑавиÑе.
ÐквиваленÑен набоÑÑ Ñимволов
ÐапÑимеÑ, ÑÐ°Ð±Ð»Ð¾Ð½Ñ |
|
\D |
СопоÑÑавлÑеÑÑÑ Ñ Ð»ÑбÑм Ñимволом, коÑоÑÑй не ÑвлÑеÑÑÑ ÑиÑÑой в базовом
лаÑинÑком алÑавиÑе. ÐквиваленÑен набоÑÑ Ñимволов
ÐапÑимеÑ, ÑÐ°Ð±Ð»Ð¾Ð½Ñ |
|
\w |
СопоÑÑавлÑеÑÑÑ Ñ Ð»ÑбÑм алÑавиÑно-ÑиÑÑовÑм Ñимволом из базового
лаÑинÑкого алÑавиÑа, вклÑÑÐ°Ñ Ñимвол подÑÑÑкиваниÑ. ÐквиваленÑен набоÑÑ
Ñимволов
ÐапÑимеÑ, Ñаблон |
|
\W |
СопоÑÑавлÑеÑÑÑ Ñ Ð»ÑбÑм Ñимволом из базового лаÑинÑкого алÑавиÑа, не
ÑвлÑÑÑимÑÑ Ñимволом, из коÑоÑÑÑ
ÑоÑÑоÑÑ Ñлова. ÐквиваленÑен набоÑÑ
Ñимволов
ÐапÑимеÑ, ÑÐ°Ð±Ð»Ð¾Ð½Ñ |
|
\s |
СопоÑÑавлÑеÑÑÑ Ñ Ð¾Ð´Ð¸Ð½Ð¾ÑнÑм пÑобелÑнÑм Ñимволом, коÑоÑÑй вклÑÑÐ°ÐµÑ Ð²
ÑÐµÐ±Ñ Ð¿Ñобел, ÑабÑлÑÑиÑ, подаÑÑ ÑÑÑаниÑÑ, пеÑевод ÑÑÑоки и дÑÑгие
пÑобелÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð®Ð½Ð¸ÐºÐ¾Ð´Ð°. ÐквиваленÑен набоÑÑ Ñимволов
ÐапÑимеÑ, Ñаблон |
|
\S |
СопоÑÑавлÑеÑÑÑ Ñ Ð¾Ð´Ð¸Ð½Ð¾ÑнÑм Ñимволом, не ÑвлÑÑÑимÑÑ Ð¿ÑобелÑнÑм.
ÐквиваленÑен набоÑÑ Ñимволов
ÐапÑимеÑ, Ñаблон |
|
\t |
СопоÑÑавлÑеÑÑÑ Ñ Ñимволом ÑабÑлÑÑии. | |
\r |
СопоÑÑавлÑеÑÑÑ Ñ Ñимволом возвÑаÑа каÑеÑки. | |
\n |
СопоÑÑавлÑеÑÑÑ Ñ Ñимволом пеÑевода ÑÑÑоки. | |
\v |
СопоÑÑавлÑеÑÑÑ Ñ Ñимволом веÑÑикалÑной ÑабÑлÑÑии. | |
\f |
СопоÑÑавлÑеÑÑÑ Ñ Ñимволом подаÑи ÑÑÑаниÑÑ. | |
[\b] |
СопоÑÑавлÑеÑÑÑ Ñ Ñимволом Ð·Ð°Ð±Ð¾Ñ (не пеÑепÑÑайÑе его Ñ ÑимволÑнÑм клаÑÑом
\b).
|
|
\0 |
СопоÑÑавлÑеÑÑÑ Ñ Ð½ÑлевÑм Ñимволом. Ðе ÑÑавÑÑе за ним дÑÑгÑÑ ÑиÑÑÑ. | |
\cX
|
Ðде
ÐапÑимеÑ, Ñаблон |
|
\xhh
|
СопоÑÑавлÑеÑÑÑ Ñ Ñимволом Ñ ÐºÐ¾Ð´Ð¾Ð¼ hh (две
ÑеÑÑнадÑаÑеÑиÑнÑе ÑиÑÑÑ).
|
|
\uhhhh
|
СопоÑÑавлÑеÑÑÑ Ñ Ñимволом Ñо знаÑением Юникода
hhhh (ÑеÑÑÑе ÑеÑÑнадÑаÑеÑиÑнÑе ÑиÑÑÑ).
|
|
\ |
ÐÐ»Ñ Ñимволов, коÑоÑÑе обÑÑно ÑÑакÑÑÑÑÑÑ Ð±ÑквалÑно, ÑказÑваеÑ, ÑÑо ÑледÑÑÑий Ñимвол ÑвлÑеÑÑÑ ÑпеÑиалÑнÑм и не должен инÑеÑпÑеÑиÑоваÑÑÑÑ Ð±ÑквалÑно.
ÐапÑимеÑ, Ñаблон или ÐÐ»Ñ Ñимволов, коÑоÑÑе обÑÑно ÑÑакÑÑÑÑÑÑ ÑпеÑиалÑнÑм обÑазом, ÑказÑваеÑ, ÑÑо ÑледÑÑÑий Ñимвол не ÑвлÑеÑÑÑ ÑпеÑиалÑнÑм и должен инÑеÑпÑеÑиÑоваÑÑÑÑ Ð±ÑквалÑно.
ÐапÑимеÑ, звÑздоÑка «*» ÑвлÑеÑÑÑ ÑпеÑиалÑнÑм Ñимволом, обознаÑаÑÑим
Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ более вÑ
ождений пÑедÑеÑÑвÑÑÑего Ñимвола пÑи ÑопоÑÑавлении;
поÑÑÐ¾Ð¼Ñ Ñаблон |
|
| ÐабоÑÑ Ñимволов | ||
| Символ | ÐнаÑение | |
[xyz] |
ÐÐ°Ð±Ð¾Ñ Ñимволов. СопоÑÑавлÑеÑÑÑ Ñ Ð»ÑбÑм из заклÑÑÑннÑÑ Ð² квадÑаÑнÑе Ñкобки Ñимволов. С помоÑÑÑ Ð´ÐµÑиÑа Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе опÑеделиÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ñимволов.
ÐапÑимеÑ, Ñаблон |
|
[^xyz] |
ÐÑÑиÑаÑелÑнÑй или дополниÑелÑнÑй Ð½Ð°Ð±Ð¾Ñ Ñимволов. То еÑÑÑ Ð¾Ð½ ÑопоÑÑавлÑеÑÑÑ Ñо вÑеми Ñимволами, ÑÑо не заклÑÑÐµÐ½Ñ Ð² квадÑаÑнÑе Ñкобки. С помоÑÑÑ Ð´ÐµÑиÑа Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе опÑеделиÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ñимволов.
ÐапÑимеÑ, Ñаблон |
|
| ÐÑаниÑÑ | ||
| Символ | ÐнаÑение | |
^ |
СопоÑÑавлÑеÑÑÑ c наÑалом ввода. ÐÑли ÑÑÑановлен Ñлаг многоÑÑÑоÑноÑÑи, Ñакже ÑопоÑÑавлÑеÑÑÑ Ñ Ð¿Ð¾Ð·Ð¸Ñией ÑÑÐ°Ð·Ñ Ð·Ð° Ñимволом пеÑеноÑа ÑÑÑоки.
ÐапÑимеÑ, Ñаблон |
|
$ |
СопоÑÑавлÑеÑÑÑ c конÑом ввода. ÐÑли ÑÑÑановлен Ñлаг многоÑÑÑоÑноÑÑи, Ñакже ÑопоÑÑавлÑеÑÑÑ Ñ Ð¿Ð¾Ð·Ð¸Ñией ÑÑÐ°Ð·Ñ Ð¿ÐµÑед Ñимволом пеÑеноÑа ÑÑÑоки.
ÐапÑимеÑ, Ñаблон |
|
\b |
СопоÑÑавлÑеÑÑÑ Ñ Ð³ÑаниÑей Ñлова нÑлевой ÑиÑинÑ, напÑÐ¸Ð¼ÐµÑ Ñ Ð¿Ð¾Ð·Ð¸Ñией
Ð¼ÐµÐ¶Ð´Ñ Ð±Ñквой и пÑобелом (не пÑÑайÑе его Ñ Ð½Ð°Ð±Ð¾Ñом Ñимволов
ÐапÑимеÑ, Ñаблон |
|
\B |
СопоÑÑавлÑеÑÑÑ Ñ Ð³ÑаниÑей не-Ñлов нÑлевой ÑиÑинÑ, напÑÐ¸Ð¼ÐµÑ Ñ Ð¿Ð¾Ð·Ð¸Ñией Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ Ð±Ñквами или двÑÐ¼Ñ Ð¿Ñобелами.
ÐапÑимеÑ, Ñаблон |
|
| ÐÑÑппиÑовка и обÑаÑнÑе ÑÑÑлки | ||
| Символ | ÐнаÑение | |
(x) |
СопоÑÑавлÑеÑÑÑ Ñ
ÐапÑимеÑ, Ñаблон ÐÐ°Ñ Ð²Ð°Ñ Ð³ÑÑпп ведÑÑ Ðº пÑоÑÐµÐ´Ð°Ð½Ð¸Ñ Ð¿ÑоизводиÑелÑноÑÑи. ÐÑли вам не нÑжно повÑоÑно ÑÑÑлаÑÑÑÑ Ð½Ð° Ð·Ð°Ñ Ð²Ð°ÑеннÑÑ Ð¿Ð¾Ð´ÑÑÑокÑ, лÑÑÑе иÑполÑзоваÑÑ Ñкобки без Ð·Ð°Ñ Ð²Ð°Ñа (ÑмоÑÑиÑе ниже). |
|
\n
|
Ðде
ÐапÑимеÑ, Ñаблон |
|
(?:x) |
СопоÑÑавлÑеÑÑÑ Ñ x, но не Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ ÑопоÑÑавление. ÐазÑваеÑÑÑ Â«Ð½ÐµÐ·Ð°Ñ
ваÑÑваÑÑие Ñкобки».
СопоÑÑавленнÑÑ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ Ð½ÐµÐ»ÑÐ·Ñ Ð´Ð¾ÑÑаÑÑ Ð¸Ð· ÑлеменÑов
[1], ..., [n] ÑезÑлÑÑиÑÑÑÑего маÑÑива или из
пÑедопÑеделÑннÑÑ
ÑвойÑÑв $1, ..., $9 обÑекÑа
RegExp.
|
|
| ÐванÑиÑикаÑоÑÑ | ||
| Символ | ÐнаÑение | |
x*
|
СопоÑÑавлÑеÑÑÑ Ñ Ð¿ÑедÑеÑÑвÑÑÑим ÑлеменÑом x Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ более Ñаз.
ÐапÑимеÑ, Ñаблон |
|
x+
|
СопоÑÑавлÑеÑÑÑ Ñ Ð¿ÑедÑеÑÑвÑÑÑим ÑлеменÑом x один или более
Ñаз. ÐквиваленÑен кванÑиÑикаÑоÑÑ
ÐапÑимеÑ, Ñаблон |
|
x*?x+?
|
СопоÑÑавлÑеÑÑÑ Ñ Ð¿ÑедÑеÑÑвÑÑÑим ÑлеменÑом x подобно
кванÑиÑикаÑоÑам
ÐапÑимеÑ, Ñаблон |
|
x?
|
СопоÑÑавлÑеÑÑÑ Ñ Ð¿ÑедÑеÑÑвÑÑÑим ÑлеменÑом x Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ один Ñаз.
ÐапÑимеÑ, Ñаблон
ÐÑли Ñимвол иÑполÑзÑеÑÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле какого-Ñо из кванÑиÑикаÑоÑов
Также Ñимвол иÑполÑзÑеÑÑÑ Ð² кванÑиÑикаÑоÑаÑ
пÑедпÑоÑмоÑÑа
|
|
x(?=y)
|
СопоÑÑавлÑеÑÑÑ Ñ x, ÑолÑко еÑли за x ÑледÑÐµÑ y. ÐапÑимеÑ, Ñаблон /Ðжек(?=ШпÑоÑ)/ ÑопоÑÑавлÑеÑÑÑ Ñо
ÑÑÑокой «Ðжек» ÑолÑко еÑли за ней ÑледÑÐµÑ ÑÑÑока «ШпÑоÑ». Шаблон
/Ðжек(?=ШпÑоÑ|ÐоÑоз)/ ÑопоÑÑавлÑеÑÑÑ Ñо ÑÑÑокой «Ðжек»
ÑолÑко еÑли за ней ÑледÑÑÑ ÑÑÑоки «ШпÑоÑ» или «ÐоÑоз». Ðднако, ни
«ШпÑоÑ», ни «ÐоÑоз» не ÑвлÑÑÑÑÑ ÑаÑÑÑÑ ÑезÑлÑÑаÑа ÑопоÑÑавлениÑ.
|
|
x(?!y)
|
СопоÑÑавлÑеÑÑÑ Ñ
ÐÑÑажение |
|
(?<=y)x
|
ÐапÑимеÑ, / |
|
(?<!y)x
|
|
|
x|y
|
СопоÑÑавлÑеÑÑÑ Ð»Ð¸Ð±Ð¾ Ñ
ÐапÑимеÑ, Ñаблон |
|
x{n}
|
Ðде
ÐапÑимеÑ, Ñаблон |
|
x{n,}
|
Ðде
ÐапÑимеÑ, Ñаблон |
|
x{n,m}
|
Ðде
ÐапÑимеÑ, Ñаблон |
|
СвойÑÑва
RegExp.prototype-
ÐозволÑÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ ÑвойÑÑва ко вÑем обÑекÑам ÑегÑлÑÑнÑÑ Ð²ÑÑажений.
RegExp.length-
ÐнаÑение
RegExp.lengthÑавно 2.
ÐеÑодÑ
ÐлобалÑнÑй обÑÐµÐºÑ RegExp не Ð¸Ð¼ÐµÐµÑ ÑобÑÑвеннÑÑ
меÑодов, однако, он наÑледÑÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑе меÑÐ¾Ð´Ñ ÑеÑез ÑепоÑÐºÑ Ð¿ÑоÑоÑипов.
ÐÑимеÑÑ
>ÐÑимеÑ: иÑполÑзование ÑегÑлÑÑнÑÑ Ð²ÑÑажений Ð´Ð»Ñ ÑÐ¼ÐµÐ½Ñ ÑоÑмаÑа даннÑÑ
СледÑÑÑий ÑкÑÐ¸Ð¿Ñ Ð¸ÑполÑзÑÐµÑ Ð¼ÐµÑод replace() ÑкземплÑÑа ÑÑÑоки String Ð´Ð»Ñ ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ в ÑоÑмаÑе Ð¸Ð¼Ñ ÑÐ°Ð¼Ð¸Ð»Ð¸Ñ Ð¸ вÑÐ²Ð¾Ð´Ð¸Ñ ÐµÐ³Ð¾ в ÑоÑмаÑе ÑамилиÑ, имÑ. Ð ÑеÑÑе Ð·Ð°Ð¼ÐµÐ½Ñ ÑкÑÐ¸Ð¿Ñ Ð¸ÑполÑзÑÐµÑ Ð·Ð°Ð¼ÐµÐ½Ð¸Ñели $1 и $2, коÑоÑÑе заменÑÑÑÑÑ Ð½Ð° ÑезÑлÑÑаÑÑ ÑооÑвеÑÑÑвÑÑÑиÑ
ÑопоÑÑавивÑиÑ
ÑÑ Ð¿Ð¾Ð´Ð³ÑÑпп ÑегÑлÑÑного вÑÑажениÑ.
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
console.log(newstr);
// пÑÐ¸Ð¼ÐµÑ Ñ ÑÑÑÑкими бÑквами
var re = /([а-ÑÑ]+)\s([а-ÑÑ]+)/i;
var str = "Ðжон СмиÑ";
var newstr = str.replace(re, "$2, $1");
console.log(newstr);
ÐÑÐ¸Ð¼ÐµÑ Ð²ÑÐ²ÐµÐ´ÐµÑ Â«Smith, John» и «СмиÑ, Ðжон»
ÐÑимеÑ: иÑполÑзование ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÐ°Ð·Ð±Ð¸ÐµÐ½Ð¸Ñ ÑÑÑок Ñ ÑазлиÑнÑми Ñимволами конÑа ÑÑÑоки
Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ ÐºÐ¾Ð½Ñа ÑÑÑоки ÑазлиÑаÑÑÑÑ Ð½Ð° ÑазлиÑнÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ (Unix, Windows и Ñак далее). Разбиение ÑÑÑок из ÑÑого пÑимеÑа ÑабоÑÐ°ÐµÑ Ð½Ð° вÑÐµÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ .
var text = "ÐекоÑоÑÑй ÑекÑÑ\nÐÑÑ ÑекÑÑ\r\nРеÑÑ\rÐÑо конеÑ";
var lines = text.split(/\r\n|\r|\n/);
console.log(lines); // вÑÐ²ÐµÐ´ÐµÑ [ 'ÐекоÑоÑÑй ÑекÑÑ', 'ÐÑÑ ÑекÑÑ', 'РеÑÑ', 'ÐÑо конеÑ' ]
ÐбÑаÑиÑе внимание, ÑÑо поÑÑдок Ñаблонов в ÑегÑлÑÑном вÑÑажении Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение.
ÐÑимеÑ: иÑполÑзование ÑегÑлÑÑнÑÑ Ð²ÑÑажений на неÑколÑÐºÐ¸Ñ ÑÑÑокаÑ
var s = "Please yes\nmake my day!";
s.match(/yes.*day/);
// ÐеÑнÑÑ null
s.match(/yes[^]*day/);
// ÐеÑнÑÑ 'yes\nmake my day'
ÐÑимеÑ: иÑполÑзование ÑегÑлÑÑнÑÑ Ð²ÑÑажений Ñ Ñлагом «липÑÑеÑÑи»
ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑиÑÑеÑ, как можно иÑполÑзоваÑÑ Ñлаг «липÑÑеÑÑи» ÑегÑлÑÑнÑÑ Ð²ÑÑажений Ð´Ð»Ñ ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¾ÑделÑнÑми ÑÑÑоками многоÑÑÑоÑного ввода.
var text = "ÐеÑÐ²Ð°Ñ ÑÑÑока\nÐÑоÑÐ°Ñ ÑÑÑока";
var regex = /(\S+) ÑÑÑока\n?/y;
var match = regex.exec(text);
console.log(match[1]); // напеÑаÑÐ°ÐµÑ 'ÐеÑваÑ'
console.log(regex.lastIndex); // напеÑаÑÐ°ÐµÑ '14'
var match2 = regex.exec(text);
console.log(match2[1]); // напеÑаÑÐ°ÐµÑ 'ÐÑоÑаÑ'
console.log(regex.lastIndex); // напеÑаÑÐ°ÐµÑ '27'
var match3 = regex.exec(text);
console.log(match3 === null); // напеÑаÑÐ°ÐµÑ 'true'
Ðо вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пÑовеÑиÑÑ, поддеÑживаеÑÑÑ Ð»Ð¸ Ñлаг «липÑÑеÑÑи», пÑи помоÑи блока try { ⦠} catch { ⦠}. ÐÐ»Ñ ÑÑого надо иÑполÑзоваÑÑ Ð»Ð¸Ð±Ð¾ вÑÑажение Ñ eval(â¦), либо конÑÑÑÑкÑÐ¾Ñ RegExp(ÑÑÑока-ÑегÑлÑÑки, ÑÑÑока-Ñ-Ñлагами) (поÑколÑÐºÑ Ð½Ð¾ÑаÑÐ¸Ñ /ÑегÑлÑÑка/Ñлаги обÑабаÑÑваеÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии, иÑклÑÑение бÑÐ´ÐµÑ Ð²ÑбÑоÑено до Ñого, как вÑполнение доÑÑÐ¸Ð³Ð½ÐµÑ Ð±Ð»Ð¾ÐºÐ° catch). ÐапÑимеÑ:
var supports_sticky;
try {
RegExp("", "y");
supports_sticky = true;
} catch (e) {
supports_sticky = false;
}
console.log(supports_sticky); // напеÑаÑÐ°ÐµÑ 'true'
ÐÑимеÑ: ÑегÑлÑÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð®Ð½Ð¸ÐºÐ¾Ð´Ð°
Ðак Ñже Ñказано вÑÑе, ÑимволÑнÑе клаÑÑÑ \w и \W ÑопоÑÑавлÑÑÑÑÑ ÑолÑко Ñ Ð±Ð°Ð·Ð¾Ð²Ñми Ñимволами ASCII; Ñо еÑÑÑ, Ñ Ñимволами Ð¾Ñ Â«a» до «z», Ð¾Ñ Â«A» до «Z», Ð¾Ñ Â«0» до «9» и Ñимволом «_». ÐÐ»Ñ ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ñимволами из дÑÑгиÑ
ÑзÑков, напÑимеÑ, Ñ ÐºÐ¸ÑиллиÑеÑкими или ивÑиÑа, иÑполÑзÑйÑе ÑоÑÐ¼Ñ \uhhhh, где «hhhh» â ÑÑо знаÑение Ñимвола Юникода, запиÑанное в ÑеÑÑнадÑаÑеÑиÑной ÑоÑме. ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑиÑÑеÑ, как можно вÑделиÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð®Ð½Ð¸ÐºÐ¾Ð´Ð°, ÑоÑÑавлÑÑÑие Ñлова.
var text = "ÐбÑÐ°Ð·ÐµÑ text на ÑÑÑÑком ÑзÑке";
var regex = /[\u0400-\u04FF]+/g;
var match = regex.exec(text);
console.log(match[0]); // напеÑаÑÐ°ÐµÑ 'ÐбÑазеÑ'
console.log(regex.lastIndex); // напеÑаÑÐ°ÐµÑ '7'
var match2 = regex.exec(text);
console.log(match2[0]); // напеÑаÑÐ°ÐµÑ 'на' [не 'text']
console.log(regex.lastIndex); // напеÑаÑÐ°ÐµÑ '15'
// и Ñак далее
ÐÐ¾Ñ Ð½Ð° ÑÑом внеÑнем ÑеÑÑÑÑе можно ÑоÑÑавиÑÑ Ð¿Ð¾Ð»Ð½Ñй диапазон блоков Юникода Ð´Ð»Ñ ÑазлиÑнÑÑ Ð¿Ð¸ÑÑменноÑÑей: regexp-unicode-block.
ÐÑимеÑ: извлеÑение имени поддомена из URL
var url = "http://xxx.domain.com";
console.log(/[^.]+/.exec(url)[0].substr(7)); // напеÑаÑÐ°ÐµÑ 'xxx'
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-regexp-regular-expression-objects> |
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
ÐÑимеÑÐ°Ð½Ð¸Ñ Ð¿Ð¾ Gecko
ÐаÑÐ¸Ð½Ð°Ñ Ñ Gecko 34, в ÑлÑÑае заÑ
ваÑа гÑÑÐ¿Ð¿Ñ Ñ ÐºÐ²Ð°Ð½ÑиÑикаÑоÑами, пÑедоÑвÑаÑаÑÑими поÑвление гÑÑÐ¿Ð¿Ñ Ð² ÑезÑлÑÑаÑе ÑопоÑÑавлениÑ, ÑопоÑÑавивÑийÑÑ ÑекÑÑ Ð´Ð»Ñ Ð·Ð°Ñ
ваÑенной гÑÑÐ¿Ð¿Ñ ÑепеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение undefined вмеÑÑо пÑÑÑой ÑÑÑоки:
// Firefox 33 или более Ñанние
"x".replace(/x(.)?/g, function (m, group) {
console.log("'group:" + group + "'");
}); // 'group:'
// Firefox 34 или более новÑе
"x".replace(/x(.)?/g, function (m, group) {
console.log("'group:" + group + "'");
}); // 'group:undefined'
ÐбÑаÑиÑе внимание, ÑÑо Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð°Ð½Ð¸Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи, ÑвойÑÑва RegExp.$N по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð¿ÑÑÑÑÑ ÑÑÑÐ¾ÐºÑ Ð²Ð¼ÐµÑÑо знаÑÐµÐ½Ð¸Ñ undefined (bug 1053944).