1 | 'use strict';
|
2 | var $ = require('../internals/export');
|
3 | var uncurryThis = require('../internals/function-uncurry-this');
|
4 | var toString = require('../internals/to-string');
|
5 | var padStart = require('../internals/string-pad').start;
|
6 | var WHITESPACES = require('../internals/whitespaces');
|
7 |
|
8 | var charCodeAt = uncurryThis(''.charCodeAt);
|
9 | var replace = uncurryThis(''.replace);
|
10 | var numberToString = uncurryThis(1.1.toString);
|
11 | var NEED_ESCAPING = RegExp('[!"#$%&\'()*+,\\-./:;<=>?@[\\\\\\]^`{|}~' + WHITESPACES + ']', 'g');
|
12 |
|
13 |
|
14 |
|
15 | $({ target: 'RegExp', stat: true, forced: true }, {
|
16 | escape: function escape(S) {
|
17 | var str = toString(S);
|
18 | var firstCode = charCodeAt(str, 0);
|
19 |
|
20 | return (firstCode > 47 && firstCode < 58 ? '\\x3' : '') + replace(str, NEED_ESCAPING, function (match) {
|
21 | var hex = numberToString(charCodeAt(match, 0), 16);
|
22 | return hex.length < 3 ? '\\x' + padStart(hex, 2, '0') : '\\u' + padStart(hex, 4, '0');
|
23 | });
|
24 | }
|
25 | });
|