ÐÑÑавÑÑе поÑле ÑÑагменÑа
У Ð½Ð°Ñ ÐµÑÑÑ ÑÑÑока Ñ HTML-докÑменÑом.
ÐапиÑиÑе ÑегÑлÑÑное вÑÑажение коÑоÑое вÑÑавлÑÐµÑ <h1>Hello</h1> ÑÑÐ°Ð·Ñ Ð¶Ðµ поÑле Ñега <body>. У Ñега могÑÑ Ð±ÑÑÑ Ð°ÑÑибÑÑÑ.
ÐапÑимеÑ:
let regexp = /ваÑе ÑегÑлÑÑное вÑÑажение/;
let str = `
<html>
<body style="height: 200px">
...
</body>
</html>
`;
str = str.replace(regexp, `<h1>Hello</h1>`);
ÐоÑле ÑÑого знаÑение str:
<html>
<body style="height: 200px"><h1>Hello</h1>
...
</body>
</html>
ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð²ÑÑавиÑÑ Ð¿Ð¾Ñле Ñега <body>, нÑжно внаÑале его найÑи. ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ иÑполÑзоваÑÑ ÑегÑлÑÑное вÑÑажение <body.*?> Ð´Ð»Ñ ÑÑого.
Ð ÑÑом задании нам не нÑжно изменÑÑÑ <body> Ñег. Ðам нÑжно ÑолÑко добавиÑÑ ÑекÑÑ Ð¿Ð¾Ñле него.
ÐÐ¾Ñ ÐºÐ°Ðº Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ ÑÑо ÑделаÑÑ:
let str = '...<body style="...">...';
str = str.replace(/<body.*?>/, '$&<h1>Hello</h1>');
alert(str); // ...<body style="..."><h1>Hello</h1>...
Ð ÑÑÑоке Ð·Ð°Ð¼ÐµÐ½Ñ $& ознаÑÐ°ÐµÑ Ñамо Ñовпадение, Ñо еÑÑÑ Ð¼Ñ Ð·Ð°Ð¼ÐµÐ½Ñем ÑÑ ÑаÑÑÑ ÑекÑÑа коÑоÑÐ°Ñ ÑооÑвеÑÑÑвÑÐµÑ <body.*?>. Совпадение заменÑеÑÑÑ Ð½Ð° Ñамого ÑÐµÐ±Ñ Ð¿Ð»ÑÑ <h1>Hello</h1>.
ÐлÑÑеÑнаÑивнÑй ваÑÐ¸Ð°Ð½Ñ â иÑполÑзоваÑÑ ÑеÑÑоÑпекÑивнÑÑ Ð¿ÑовеÑкÑ:
let str = '...<body style="...">...';
str = str.replace(/(?<=<body.*?>)/, `<h1>Hello</h1>`);
alert(str); // ...<body style="..."><h1>Hello</h1>...
Ðак Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе видеÑÑ, в ÑÑом ÑегÑлÑÑном вÑÑажении еÑÑÑ ÑолÑко ÑеÑÑоÑпекÑÐ¸Ð²Ð½Ð°Ñ ÑаÑÑÑ.
ÐÑо ÑабоÑÐ°ÐµÑ Ð²Ð¾Ñ Ñак:
- Ркаждой позиÑии ÑекÑÑа.
- ÐÑовеÑÑÐµÑ Ð½Ðµ пÑедÑеÑÑвÑÐµÑ Ð»Ð¸ емÑ
<body.*?>. - ÐÑли ÑÑо Ñак, Ñо Ð¼Ñ Ð²ÑÑÑеÑили Ñовпадение.
Тег <body.*?> не веÑнÑÑÑÑ. РезÑлÑÑаÑом ÑÑого ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑвлÑеÑÑÑ Ð±ÑквалÑно пÑÑÑÐ°Ñ ÑÑÑока, но она ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ ÑолÑко в позиÑиÑÑ
, коÑоÑÑм пÑедÑеÑÑвÑÐµÑ <body.*?>.
ÐÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð·Ð°Ð¼ÐµÐ½Ð° «пÑÑÑой ÑÑÑоки», коÑоÑой пÑедÑеÑÑвÑÐµÑ <body.*?> на <h1>Hello</h1>. ЧÑо, как Ñаз, и еÑÑÑ Ð²ÑÑавка ÑÑой ÑÑÑоки поÑле <body>.
P.S. Флаги ÑегÑлÑÑнÑÑ
вÑÑажений, Ñакие как s и i, Ñакже могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ: /<body.*?>/si. Флаг s ÑÐ¾Ð·Ð´Ð°ÐµÑ ÑоÑеÑнÑй . ÑооÑвеÑÑÑвÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑÑÑоки, а Ñлаг i Ð´ÐµÐ»Ð°ÐµÑ <body> Ñакже ÑооÑвеÑÑÑвÑÑÑим <BODY> без ÑÑеÑа ÑегиÑÑÑа.