ืžื•ื–ื™ืœื” ืขื‘ืจื” ืœื”ืฉืชืžืฉ ื‘ืžื ื•ืข ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืจื™ ื ืคื•ืฅ ืขื Chromium

ืžื ื•ืข JavaScript ืฉืœ SpiderMonkey ื‘ืฉื™ืžื•ืฉ ื‘ืคื™ื™ืจืคื•ืงืก ื”ื•ืขื‘ืจ ืœื”ืฉืชืžืฉ ื‘ื™ื™ืฉื•ื ืžืขื•ื“ื›ืŸ ืฉืœ ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืจื™ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืงื•ื“ ื”ื ื•ื›ื—ื™ Irregexp ืžืžื ื•ืข V8 JavaScript ื”ืžืฉืžืฉ ื‘ื“ืคื“ืคื ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืคืจื•ื™ืงื˜ Chromium. ื”ื”ื˜ืžืขื” ื”ื—ื“ืฉื” ืฉืœ RegExp ืชื•ืฆืข ื‘-Firefox 78, ื”ืžืชื•ื›ื ื ืช ืœ-30 ื‘ื™ื•ื ื™, ื•ืชื‘ื™ื ืœื“ืคื“ืคืŸ ืืช ื›ืœ ืจื›ื™ื‘ื™ ื”-ECMAScript ื”ื—ืกืจื™ื ื”ืงืฉื•ืจื™ื ืœื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืจื™ื™ื.

ื™ืฆื•ื™ืŸ ื›ื™ ืžื ื•ืข ื”-RegExp ื‘-SpiderMonkey ืžืชื•ื›ื ืŸ ื›ืจื›ื™ื‘ ื ืคืจื“, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืœื‘ืœืชื™ ืชืœื•ื™ ื™ื—ืกื™ืช ื•ืžืชืื™ื ืœื”ื—ืœืคื” ืœืœื ืฆื•ืจืš ื‘ื‘ื™ืฆื•ืข ืฉื™ื ื•ื™ื™ื ืžื”ื•ืชื™ื™ื ื‘ื‘ืกื™ืก ื”ืงื•ื“. ืžื•ื“ื•ืœืจื™ื•ืช ืืคืฉืจื” ื‘ืฉื ืช 2014 ืœื”ื—ืœื™ืฃ ืืช ืžื ื•ืข ื”-YARR RegExp ืฉืฉื™ืžืฉ ื‘ืžืงื•ืจ ื‘ืคื™ื™ืจืคื•ืงืก ื‘ืžื–ืœื’ ืฉืœ ืžื ื•ืข ื”-Irregexp ืž-V8. Irregexp ืงืฉื•ืจ ืœ-V8 API, ืงืฉื•ืจ ืœืืกืคืŸ ื”ืืฉืคื” ื•ืžืฉืชืžืฉ ื‘ื™ื™ืฆื•ื’ ืžื—ืจื•ื–ืช ื•ืžื•ื“ืœ ืื•ื‘ื™ื™ืงื˜ ืกืคืฆื™ืคื™ื™ื ืœ-V8. ื‘ืชื”ืœื™ืš ื”ื”ืกืชื’ืœื•ืช ืœืžืžืฉืง ื”-API ื”ืคื ื™ืžื™ ืฉืœ SpiderMonkey ื‘-2014, ืžื ื•ืข ื”-Irregexp ื ื›ืชื‘ ืžื—ื“ืฉ ื‘ืื•ืคืŸ ื—ืœืงื™, ื•ืฉื™ื ื•ื™ื™ื ืฆืฆื•, ื›ื’ื•ืŸ ื“ื’ืœ '\u', ื‘ืžื™ื“ืช ื”ืืคืฉืจ ื”ื•ืขื‘ืจ ืœืชื•ืš ืžื–ืœื’ ืฉืžืชื•ื—ื–ืง ืขืœ ื™ื“ื™ ืžื•ื–ื™ืœื”.

ืœืžืจื‘ื” ื”ืฆืขืจ, ืฉืžื™ืจื” ืขืœ ืžื–ืœื’ ืžืกื•ื ื›ืจืŸ ื”ื™ื ืงืฉื” ื•ื“ื•ืจืฉืช ืžืฉืื‘ื™ื. ืขื ื”ื•ืคืขืชืŸ ืฉืœ ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช ื”ืงืฉื•ืจื•ืช ืœื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืจื™ื™ื ื‘ืชืงืŸ ECMAScript 2018, ืžืคืชื—ื™ Mozilla ื—ืฉื‘ื• ื›ื™ืฆื“ ืœื”ืงืœ ืขืœ ื”ืขื‘ืจืช ืฉื™ื ื•ื™ื™ื ืž-Irregexp. ื›ืžื•ืฆื, ื”ื•ืฆืข ืงื•ื ืกืคื˜ ืขื˜ื™ืคื”, ื”ืžืืคืฉืจ ืฉื™ืžื•ืฉ ื‘ืžื ื•ืข Irregexp ื›ืžืขื˜ ืœืœื ืฉื™ื ื•ื™ ื‘-SpiderMonkey (ื”ืฉื™ื ื•ื™ื™ื ืžืฆื˜ืžืฆืžื™ื ืจืง ืœื”ื—ืœืคื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ื‘ืœื•ืงื™ื "#include").

ืžื•ื–ื™ืœื” ืขื‘ืจื” ืœื”ืฉืชืžืฉ ื‘ืžื ื•ืข ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืจื™ ื ืคื•ืฅ ืขื Chromium

ื”ืžืกื’ืจืช ืžืกืคืงืช ืœ-Irregexp ืืช ื”ื™ื›ื•ืœื•ืช ื”ืกืคืฆื™ืคื™ื•ืช ื”ื“ืจื•ืฉื•ืช ืœ-V8, ืœืจื‘ื•ืช ืคื•ื ืงืฆื™ื•ืช ื ื™ื”ื•ืœ ื–ื™ื›ืจื•ืŸ ื•ื™ืฆื™ืจืช ืงื•ื“, ื›ืžื• ื’ื ืžื‘ื ื™ ื ืชื•ื ื™ื ืžืงื•ืจื™ื™ื ื”ืžื™ื•ืฉืžื™ื ื‘ืืžืฆืขื•ืช ืžื ื•ืขื™ ื ื™ื”ื•ืœ ื–ื™ื›ืจื•ืŸ, ืžื—ื•ืœืœื™ ืงื•ื“ ื•ืžื‘ื ื™ SpiderMonkey.

ืขื“ื›ื•ืŸ ืžื ื•ืข ื”-RegExp ื™ืืคืฉืจ ืœ-Firefox ืœืชืžื•ืš ื‘ืชื›ื•ื ื•ืช ื›ืžื• ืœื›ื™ื“ื•ืช ืขื ืฉื, ื‘ืจื™ื—ืช ืชื•ื•ื™ื ืฉืœ Unicode, ื“ื’ืœ dotAll ื•ืžืฆื‘ Lookbehind:

  • ืงื‘ื•ืฆื•ืช ืขื ืฉื ืœืืคืฉืจ ืœืš ืœืฉื™ื™ืš ื—ืœืงื™ ืžื—ืจื•ื–ืช ื”ืžื•ืชืืžื™ื ืœื‘ื™ื˜ื•ื™ ืจื’ื•ืœืจื™ ืขื ืฉืžื•ืช ืกืคืฆื™ืคื™ื™ื ื‘ืžืงื•ื ืžืกืคืจื™ื ืกื™ื“ื•ืจื™ื™ื ืฉืœ ื”ืชืืžื•ืช (ืœื“ื•ื’ืžื”, ื‘ืžืงื•ื "/(\d{4})-(\d{2})-(\d{ 2})/" ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ "/( ? \d{4})-(? \d{2})-(? \d{2})/" ื•ื’ื™ืฉื” ืœืฉื ื” ืœื ื“ืจืš result[1], ืืœื ื“ืจืš result.groups.year).
  • ื‘ืจื™ื—ื” ืžืฉื™ืขื•ืจื™ื ืชื•ื•ื™ Unicode ืžื•ืกื™ืคื™ื ืงื•ื ืกื˜ืจื•ืงืฆื™ื•ืช \p{...} ื•-\P{...}, ืœื“ื•ื’ืžื”, \p{Number} ืžื’ื“ื™ืจ ืืช ื›ืœ ื”ืชื•ื•ื™ื ื”ืืคืฉืจื™ื™ื ืขื ืžืกืคืจื™ื (ื›ื•ืœืœ ืกื™ืžื ื™ื ื›ืžื• โ‘ ), \p{Alphabetic} - ืื•ืชื™ื•ืช (ื›ื•ืœืœ ื”ื™ืจื•ื’ืœื™ืคื™ื ), \p{ืžืชืžื˜ื™ืงื”} - ืกืžืœื™ื ืžืชืžื˜ื™ื™ื ื•ื›ื•'.
  • ื“ื’ืœ dotAll ื’ื•ืจื ืœื™ืจื™ ืฉืœ ืžืกื›ืช "." ื›ื•ืœืœ ืชื•ื•ื™ื ืœื”ื–ื ืช ืฉื•ืจื”.
  • ืžืฉื˜ืจ ื”ืกืชื›ืœ ืื—ื•ืจื” ืžืืคืฉืจ ืœืงื‘ื•ืข ื‘ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืจื™ ืฉืชื‘ื ื™ืช ืื—ืช ืงื•ื“ืžืช ืœืื—ืจืช (ืœื“ื•ื’ืžื”, ื”ืชืืžืช ืกื›ื•ื ื“ื•ืœืจ ืžื‘ืœื™ ืœืœื›ื•ื“ ืืช ืกื™ืžืŸ ื”ื“ื•ืœืจ).

ื”ืคืจื•ื™ืงื˜ ื‘ื•ืฆืข ื‘ื”ืฉืชืชืคื•ืช ืžืคืชื—ื™ V8, ืืฉืจ ืžืฆื“ื ืคืขืœื• ืœื”ืคื—ืชืช ื”ืชืœื•ืช ืฉืœ Irregexp ื‘-V8, ื•ื”ืขื‘ื™ืจื• ื›ืžื” ืคื™ืฆ'ืจื™ื ืฉืœื ื ื™ืชืŸ ืœื™ื™ืฉื ื‘ืืžืฆืขื•ืช SpiderMonkey ืœื‘ืœื•ืงื™ื ืฉืœ "#ifdef" ืœื”ืฉื‘ื™ืช. ืฉื™ืชื•ืฃ ื”ืคืขื•ืœื” ื”ืชื‘ืจืจ ื›ืžื•ืขื™ืœ ื”ื“ื“ื™. ืžืคืชื—ื™ ืžื•ื–ื™ืœื” ืžืฆื™ื“ื ื”ื’ื™ืฉื• ืฉื™ื ื•ื™ื™ื ื‘-Irregexp ืฉืžื‘ื˜ืœื™ื ื—ืœืง ื—ื•ืกืจ ืขืงื‘ื™ื•ืช ืขื ื”ื“ืจื™ืฉื•ืช ืฉืœ ืชืงืŸ JavaScript ื• ืžืฉืชืคืจ ืื™ื›ื•ืช ืงื•ื“. ื›ืžื• ื›ืŸ, ื‘ืžื”ืœืš ื‘ื“ื™ืงื•ืช ืžืขื•ืจืคืœื•ืช ืฉืœ Firefox, ื–ื•ื”ื• ื•ื‘ื•ื˜ืœื• ืฉื’ื™ืื•ืช ืฉืœื ื”ื‘ื—ื™ื ื• ื‘ืขื‘ืจ ื‘ืงื•ื“ Irregexp ืฉื”ื•ื‘ื™ืœื• ืœืงืจื™ืกื•ืช.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”