Mozilla рдиреЗ Chromium рд╕рд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЗрдВрдЬрд┐рди рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реНрд╡рд┐рдЪ рдХреЗрд▓реЗ

SpiderMonkey JavaScript рдЗрдВрдЬрд┐рди Firefox рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╡рд░реНрддрдорд╛рди рдХреЛрдбрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕реНрдкреНрд░реЗрд╢рдиреНрд╕рдЪреА рдЕрджреНрдпрдпрд╛рд╡рдд рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА Irregexp рдХреНрд░реЛрдорд┐рдпрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ V8 JavaScript рдЗрдВрдЬрд┐рдирдордзреВрди. RegExp рдЪреА рдирд╡реАрди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдлрд╛рдпрд░рдлреЙрдХреНрд╕ 78 рдордзреНрдпреЗ рдСрдлрд░ рдХреЗрд▓реА рдЬрд╛рдИрд▓, 30 рдЬреВрди рд░реЛрдЬреА рд╢реЗрдбреНрдпреВрд▓ рдХреЗрд▓реА рдЬрд╛рдИрд▓ рдЖрдгрд┐ рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдирд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╕рд░реНрд╡ рдЧрд╣рд╛рд│ ECMAScript рдШрдЯрдХ рдЖрдгрддреАрд▓.

рд╣реЗ рдиреЛрдВрджрд╡рд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдХреА рд╕реНрдкрд╛рдпрдбрд░рдордБрдХреА рдордзреАрд▓ RegExp рдЗрдВрдЬрд┐рди рд╕реНрд╡рддрдВрддреНрд░ рдШрдЯрдХ рдореНрд╣рдгреВрди рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рддреЗ рддреБрд▓рдиреЗрдиреЗ рд╕реНрд╡рддрдВрддреНрд░ рдЖрдгрд┐ рдХреЛрдб рдмреЗрд╕рдордзреНрдпреЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдмрджрд▓ рди рдХрд░рддрд╛ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдмрдирд╡рддреЗ. рдореЙрдбреНрдпреБрд▓реЕрд░рд┐рдЯреАрдореБрд│реЗ 2014 рдордзреНрдпреЗ рдлрд╛рдпрд░рдлреЙрдХреНрд╕рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реЗ YARR RegExp рдЗрдВрдЬрд┐рди V8 рдордзреАрд▓ Irregexp рдЗрдВрдЬрд┐рдирдЪреНрдпрд╛ рдХрд╛рдЯреНрдпрд╛рдиреЗ рдмрджрд▓рдгреЗ рд╢рдХреНрдп рдЭрд╛рд▓реЗ. Irregexp рд╣реЗ V8 API рд╢реА рдмрд╛рдВрдзрд▓реЗрд▓реЗ рдЖрд╣реЗ, рдХрдЪрд░рд╛ рдЧреЛрд│рд╛ рдХрд░рдгрд╛рд▒реНрдпрд╛рд▓рд╛ рдмрд╛рдВрдзрд▓реЗрд▓реЗ рдЖрд╣реЗ, рдЖрдгрд┐ V8-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЖрдгрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбреЗрд▓ рд╡рд╛рдкрд░рддреЗ. 2014 рдордзреНрдпреЗ рд╕реНрдкрд╛рдпрдбрд░рдордБрдХреАрдЪреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд API рд╢реА рдЬреБрд│рд╡реВрди рдШреЗрдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд, Irregexp рдЗрдВрдЬрд┐рди рдЕрдВрд╢рддрдГ рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗ рдЖрдгрд┐ рд╢рдХреНрдп рдЕрд╕реЗрд▓ рддреЗрдереЗ '\u' рдзреНрд╡рдЬ рд╕рд╛рд░рдЦреЗ рдЙрджрдпреЛрдиреНрдореБрдЦ рдмрджрд▓ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд Mozilla рджреНрд╡рд╛рд░реЗ рджреЗрдЦрднрд╛рд▓ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрд╛рдЯреНрдпрд╛рдордзреНрдпреЗ.

рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреНрдб рдлреЛрд░реНрдХ рд░рд╛рдЦрдгреЗ рдХрдареАрдг рдЖрдгрд┐ рд╕рдВрд╕рд╛рдзрди рдЧрд╣рди рдЖрд╣реЗ. ECMAScript 2018 рдорд╛рдирдХрд╛рдВрдордзреНрдпреЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддреАрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪреНрдпрд╛ рдЖрдЧрдордирд╛рдиреЗ, Mozilla рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдиреА Irregexp рдордзреВрди рдмрджрд▓ рд╕реНрдерд▓рд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рд╕реЛрдкреЗ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рдпрд╛рдмрджреНрджрд▓ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛. рдПрдХ рдорд╛рд░реНрдЧ рдореНрд╣рдгреВрди, рдПрдХ рд░реЕрдкрд┐рдВрдЧ рд╕рдВрдХрд▓реНрдкрдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА, рдЬреА рд╕реНрдкрд╛рдпрдбрд░рдордБрдХреАрдордзреНрдпреЗ рдЬрд╡рд│рдЬрд╡рд│ рди рдмрджрд▓рд▓реЗрд▓реЗ рдЗрд░реЗрдЧрдПрдХреНрд╕рдПрдХреНрд╕ рдЗрдВрдЬрд┐рди рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ (рдмрджрд▓ рдХреЗрд╡рд│ "# рд╕рдорд╛рд╡реЗрд╢" рдмреНрд▓реЙрдХреНрд╕рдЪреНрдпрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдмрджрд▓реАрд╕рд╛рдареА рдХрдореА рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд).

Mozilla рдиреЗ Chromium рд╕рд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЗрдВрдЬрд┐рди рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реНрд╡рд┐рдЪ рдХреЗрд▓реЗ

рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдорд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЖрдгрд┐ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдлрдВрдХреНрд╢рдиреНрд╕, рддрд╕реЗрдЪ рдореЗрдорд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЗрдВрдЬрд┐рди, рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдЖрдгрд┐ рд╕реНрдкрд╛рдпрдбрд░рдордБрдХреА рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рд╡рд╛рдкрд░реВрди рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдиреЗрдЯрд┐рд╡реНрд╣ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕рд╕рд╣ рдЖрд╡рд╢реНрдпрдХ V8-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖рдорддрд╛рдВрд╕рд╣ Irregexp рд▓рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ.

RegExp рдЗрдВрдЬрд┐рди рдЕрдкрдбреЗрдЯ рдХреЗрд▓реНрдпрд╛рдиреЗ рдлрд╛рдпрд░рдлреЙрдХреНрд╕рд▓рд╛ рдирд╛рдорд╛рдВрдХрд┐рдд рдХреЕрдкреНрдЪрд░, рдпреБрдирд┐рдХреЛрдб рдХреЕрд░реЗрдХреНрдЯрд░ рдХреНрд▓рд╛рд╕ рдПрд╕реНрдХреЗрдкрд┐рдВрдЧ, рдбреЙрдЯрдСрд▓ рдзреНрд╡рдЬ рдЖрдгрд┐ рд▓реБрдХрдмрд┐рд╣рд╛рдЗрдВрдб рдореЛрдб рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪреЗ рд╕рдорд░реНрдерди рдХрд░рдгреНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рдорд┐рд│реЗрд▓:

  • рдирд╛рдорд╛рдВрдХрд┐рдд рдЧрдЯ рдЬреБрд│рдгреНрдпрд╛рдВрдЪреНрдпрд╛ рдЕрдиреБрдХреНрд░рдорд╛рдВрдХрд╛рдВрдРрд╡рдЬреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рд╡рд╛рдВрд╕рд╣ рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдирджреНрд╡рд╛рд░реЗ рдЬреБрд│рд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧрдЪреЗ рднрд╛рдЧ рд╕рдВрдмрджреНрдз рдХрд░рдгреНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рджреЗрддреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, тАЬ/(\d{4})-(\d{2})-(\d{) 2})/тАЭ рддреБрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛ тАЬ/( ? \d{4})-(? \d{2})-(? \d{2})/" рдЖрдгрд┐ рд╡рд░реНрд╖рд╛рдд рдкреНрд░рд╡реЗрд╢ рдорд┐рд│рд╡рд╛ рдкрд░рд┐рдгрд╛рдо[1] рджреНрд╡рд╛рд░реЗ рдирд╛рд╣реА, рддрд░ result.groups.year рджреНрд╡рд╛рд░реЗ).
  • рдПрд╕реНрдХреЗрдкрд┐рдВрдЧ рдХреНрд▓рд╛рд╕реЗрд╕ рдпреБрдирд┐рдХреЛрдб рдЕрдХреНрд╖рд░реЗ \p{...} рдЖрдгрд┐ \P{...} рд░рдЪрдирд╛ рдЬреЛрдбрддрд╛рдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, \p{Number} рд╕рдВрдЦреНрдпрд╛ рджрд░реНрд╢рд╡рд┐рдгрд╛рд░реЗ рд╕рд░реНрд╡ рд╕рдВрднрд╛рд╡реНрдп рд╡рд░реНрдг рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛рдд (тСа рд╕рд╛рд░рдЦреНрдпрд╛ рдЪрд┐рдиреНрд╣рд╛рдВрд╕рд╣), \p{рдЕрд▓реНрдлрд╛рдмреЗрдЯрд┐рдХ} - рдЕрдХреНрд╖рд░реЗ (рдпрд╛рд╕рд╣ рдЪрд┐рддреНрд░рд▓рд┐рдкреА ), \p{рдЧрдгрд┐рдд} тАФ рдЧрдгрд┐рддреАрдп рдЪрд┐рдиреНрд╣реЗ рдЗ.
  • рдлреНрд▓реЕрдЧ dotAll "." рдорд╛рд╕реНрдХрд▓рд╛ рдЖрдЧ рд▓рд╛рд╡рддреЗ. рд▓рд╛рдЗрди рдлреАрдб рд╡рд░реНрдгрд╛рдВрд╕рд╣.
  • рдореЛрдб рдорд╛рдЧреЗ рдкрд╛рд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдордзреНрдпреЗ рдПрдХ рдирдореБрдирд╛ рджреБрд╕рд░реНтАНрдпрд╛рдЪреНрдпрд╛ рдЖрдзреА рдЖрд╣реЗ рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдбреЙрд▓рд░ рдЪрд┐рдиреНрд╣ рдХреЕрдкреНрдЪрд░ рди рдХрд░рддрд╛ рдбреЙрд▓рд░рдЪреНрдпрд╛ рд░рдХрдореЗрд╢реА рдЬреБрд│рдгреЗ).

рд╣рд╛ рдкреНрд░рдХрд▓реНрдк V8 рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдЪреНрдпрд╛ рд╕рд╣рднрд╛рдЧрд╛рдиреЗ рдкрд╛рд░ рдкрд╛рдбрд▓рд╛ рдЧреЗрд▓рд╛, рдЬреНрдпрд╛рдВрдиреА рддреНрдпрд╛рдВрдЪреНрдпрд╛ рднрд╛рдЧрд╛рд╕рд╛рдареА, V8 рд╡рд░реАрд▓ Irregexp рдЪреЗ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рдо рдХреЗрд▓реЗ рдЖрдгрд┐ рд╕реНрдкрд╛рдпрдбрд░рдордБрдХреАрдЪреНрдпрд╛ рдЖрдзрд╛рд░реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рдпреЗрдгрд╛рд░ рдирд╛рд╣реА рдЕрд╢рд╛ рдХрд╛рд╣реА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдирд╛ "#ifdef" рдмреНрд▓реЙрдХреНрд╕рдордзреНрдпреЗ рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ. рд╣реЗ рд╕рд╣рдХрд╛рд░реНрдп рдкрд░рд╕реНрдкрд░ рдлрд╛рдпрджреЗрд╢реАрд░ рдард░рд▓реЗ. рддреНрдпрд╛рдВрдЪреНрдпрд╛ рднрд╛рдЧрд╛рд╕рд╛рдареА, Mozilla рдбреЗрд╡реНрд╣рд▓рдкрд░реНрд╕рдиреЗ Irregexp рдордзреНрдпреЗ рдмрджрд▓ рд╕рдмрдорд┐рдЯ рдХреЗрд▓реЗ рдЬреЗ рдХрд╛рд╣реА рдХрд╛рдвреВрди рдЯрд╛рдХрддрд╛рдд рд╡рд┐рд╕рдВрдЧрддреА JavaScript рдорд╛рдирдХрд╛рдВрдЪреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдВрд╕рд╣ рдЖрдгрд┐ рд╕реБрдзрд╛рд░рдд рдЖрд╣реЗ рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛. рддрд╕реЗрдЪ, рдлрд╛рдпрд░рдлреЙрдХреНрд╕рдЪреНрдпрд╛ рдЕрд╕реНрдкрд╖реНрдЯ рдЪрд╛рдЪрдгреА рджрд░рдореНрдпрд╛рди, рдЗрд░реЗрдЧрдПрдХреНрд╕реНрдк рдХреЛрдбрдордзреАрд▓ рдкреВрд░реНрд╡реА рд▓рдХреНрд╖рд╛рдд рди рдЖрд▓реЗрд▓реНрдпрд╛ рддреНрд░реБрдЯреА рдЬреНрдпрд╛ рдХреНрд░реЕрд╢рд╕ рдХрд╛рд░рдгреАрднреВрдд рд╣реЛрддреНрдпрд╛ рддреНрдпрд╛ рдУрд│рдЦрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрдгрд┐ рддреНрдпрд╛ рджреВрд░ рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛