Skip to content

Commit ecf1363

Browse files
authored
Merge pull request #1391 from zloirock/regexp-escape-stable
2 parents 68f7b76 + 7438a71 commit ecf1363

File tree

16 files changed

+137
-110
lines changed

16 files changed

+137
-110
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
## Changelog
22
##### Unreleased
3+
- [`RegExp.escape` proposal](https://github.com/tc39/proposal-regex-escaping):
4+
- Built-ins:
5+
- `RegExp.escape`
6+
- Moved to stable ES, [February 2025 TC39 meeting](https://github.com/tc39/proposals/commit/b81fa9bccf4b51f33de0cbe797976a84d05d4b76)
7+
- Added `es.` namespace module, `/es/` and `/stable/` namespaces entries
38
- Compat data improvements:
49
- [`DisposableStack`, `AsyncDisposableStack`, `SuppressedError` and `Iterator.prototype[@@dispose]`](https://github.com/tc39/proposal-explicit-resource-management) marked as [shipped from V8 ~ Chromium 134](https://issues.chromium.org/issues/42203506#comment24)
510
- [`Error.isError`](https://github.com/tc39/proposal-is-error) added and marked as supported from V8 ~ Chromium 134

README.md

+30-27
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
148148
- [`String.prototype.trimStart` / `String.prototype.trimEnd`](#stringprototypetrimstart-stringprototypetrimend)
149149
- [`RegExp` `s` (`dotAll`) flag](#regexp-s-dotall-flag)
150150
- [`RegExp` named capture groups](#regexp-named-capture-groups)
151+
- [`RegExp` escaping](#regexp-escaping)
151152
- [`Promise.allSettled`](#promiseallsettled)
152153
- [`Promise.any`](#promiseany)
153154
- [`Promise.prototype.finally`](#promiseprototypefinally)
@@ -164,7 +165,6 @@ structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
164165
- [`Float16` methods](#float16-methods)
165166
- [`Uint8Array` to / from base64 and hex](#uint8array-to--from-base64-and-hex)
166167
- [Explicit resource management](#explicit-resource-management)
167-
- [`RegExp` escaping](#regexp-escaping)
168168
- [`Math.sumPrecise`](#mathsumprecise)
169169
- [`Symbol.metadata` for decorators metadata proposal](#symbolmetadata-for-decorators-metadata-proposal)
170170
- [`Error.isError`](#erroriserror)
@@ -893,7 +893,7 @@ Adding support of well-known [symbols](#ecmascript-symbol) `@@match`, `@@replace
893893

894894
Annex B methods. Modules [`es.string.anchor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.anchor.js), [`es.string.big`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.big.js), [`es.string.blink`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.blink.js), [`es.string.bold`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.bold.js), [`es.string.fixed`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.fixed.js), [`es.string.fontcolor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.fontcolor.js), [`es.string.fontsize`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.fontsize.js), [`es.string.italics`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.italics.js), [`es.string.link`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.link.js), [`es.string.small`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.small.js), [`es.string.strike`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.strike.js), [`es.string.sub`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.sub.js), [`es.string.sup`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.sup.js), [`es.string.substr`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.string.substr.js), [`es.escape`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.escape.js) and [`es.unescape`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.unescape.js).
895895

896-
`RegExp` features: modules [`es.regexp.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.constructor.js), [`es.regexp.dot-all`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.dot-all.js), [`es.regexp.flags`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.flags.js), [`es.regexp.sticky`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.sticky.js) and [`es.regexp.test`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.test.js).
896+
`RegExp` features: modules [`es.regexp.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.constructor.js), [`es.regexp.escape`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.escape.js), [`es.regexp.dot-all`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.dot-all.js), [`es.regexp.flags`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.flags.js), [`es.regexp.sticky`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.sticky.js) and [`es.regexp.test`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.regexp.test.js).
897897
```ts
898898
class String {
899899
static fromCodePoint(...codePoints: Array<number>): string;
@@ -939,6 +939,7 @@ class String {
939939
class RegExp {
940940
// support of sticky (`y`) flag, dotAll (`s`) flag, named capture groups, can alter flags
941941
constructor(pattern: RegExp | string, flags?: string): RegExp;
942+
static escape(value: string): string
942943
exec(): Array<string | undefined> | null; // IE8 fixes
943944
test(string: string): boolean; // delegation to `.exec`
944945
toString(): string; // ES2015+ fix - generic
@@ -998,6 +999,7 @@ core-js(-pure)/es|stable|actual|full/string(/virtual)/sup
998999
core-js(-pure)/es|stable|actual|full/string(/virtual)/iterator
9991000
core-js/es|stable|actual|full/regexp
10001001
core-js/es|stable|actual|full/regexp/constructor
1002+
core-js(-pure)/es|stable|actual|full/regexp/escape
10011003
core-js/es|stable|actual|full/regexp/dot-all
10021004
core-js(-pure)/es|stable|actual|full/regexp/flags
10031005
core-js/es|stable|actual|full/regexp/sticky
@@ -1086,6 +1088,20 @@ for (let { groups: { number, letter } } of '1111a2b3cccc'.matchAll(RegExp('(?<nu
10861088
'a💩b'.toWellFormed(); // => 'a💩b'
10871089
'a\uD83Db'.toWellFormed(); // => 'a�b'
10881090
```
1091+
1092+
[*Example*](https://tinyurl.com/ykac4qgy):
1093+
```js
1094+
console.log(RegExp.escape('10$')); // => '\\x310\\$'
1095+
console.log(RegExp.escape('abcdefg_123456')); // => '\\x61bcdefg_123456'
1096+
console.log(RegExp.escape('Привет')); // => 'Привет'
1097+
console.log(RegExp.escape('(){}[]|,.?*+-^$=<>\\/#&!%:;@~\'"`'));
1098+
// => '\\(\\)\\{\\}\\[\\]\\|\\x2c\\.\\?\\*\\+\\x2d\\^\\$\\x3d\\x3c\\x3e\\\\\\/\\x23\\x26\\x21\\x25\\x3a\\x3b\\x40\\x7e\\x27\\x22\\x60'
1099+
console.log(RegExp.escape('\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'));
1100+
// => '\\\t\\\n\\\v\\\f\\\r\\x20\\xa0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029\\ufeff'
1101+
console.log(RegExp.escape('💩')); // => '💩'
1102+
console.log(RegExp.escape('\uD83D')); // => '\\ud83d'
1103+
```
1104+
10891105
#### ECMAScript: Number[](#index)
10901106
Module [`es.number.constructor`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/es.number.constructor.js). `Number` constructor support binary and octal literals, [*example*](https://tinyurl.com/2659klkj):
10911107
```js
@@ -2283,6 +2299,18 @@ class RegExp {
22832299
```
22842300
core-js/proposals/regexp-named-groups
22852301
```
2302+
2303+
##### [`RegExp` escaping](https://github.com/tc39/proposal-regex-escaping)[](#index)
2304+
```ts
2305+
class RegExp {
2306+
static escape(value: string): string
2307+
}
2308+
```
2309+
[*CommonJS entry points:*](#commonjs-api)
2310+
```
2311+
core-js/proposals/regexp-escaping
2312+
```
2313+
22862314
##### [`Promise.allSettled`](https://github.com/tc39/proposal-promise-allSettled)[](#index)
22872315
```ts
22882316
class Promise {
@@ -2582,31 +2610,6 @@ core-js(-pure)/actual|full/iterator/dispose
25822610
core-js(-pure)/actual|full/async-iterator/async-dispose
25832611
```
25842612

2585-
##### [`RegExp` escaping](https://github.com/tc39/proposal-regex-escaping)[](#index)
2586-
Module [`esnext.regexp.escape`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.regexp.escape.js)
2587-
```ts
2588-
class RegExp {
2589-
static escape(value: string): string
2590-
}
2591-
```
2592-
[*CommonJS entry points:*](#commonjs-api)
2593-
```
2594-
core-js/proposals/regexp-escaping
2595-
core-js(-pure)/actual|full/regexp/escape
2596-
```
2597-
[*Example*](https://tinyurl.com/ykac4qgy):
2598-
```js
2599-
console.log(RegExp.escape('10$')); // => '\\x310\\$'
2600-
console.log(RegExp.escape('abcdefg_123456')); // => '\\x61bcdefg_123456'
2601-
console.log(RegExp.escape('Привет')); // => 'Привет'
2602-
console.log(RegExp.escape('(){}[]|,.?*+-^$=<>\\/#&!%:;@~\'"`'));
2603-
// => '\\(\\)\\{\\}\\[\\]\\|\\x2c\\.\\?\\*\\+\\x2d\\^\\$\\x3d\\x3c\\x3e\\\\\\/\\x23\\x26\\x21\\x25\\x3a\\x3b\\x40\\x7e\\x27\\x22\\x60'
2604-
console.log(RegExp.escape('\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'));
2605-
// => '\\\t\\\n\\\v\\\f\\\r\\x20\\xa0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029\\ufeff'
2606-
console.log(RegExp.escape('💩')); // => '💩'
2607-
console.log(RegExp.escape('\uD83D')); // => '\\ud83d'
2608-
```
2609-
26102613
##### [`Math.sumPrecise`](https://github.com/tc39/proposal-math-sum)
26112614
Module [`esnext.math.sum-precise`](https://github.com/zloirock/core-js/blob/master/packages/core-js/modules/esnext.math.sum-precise.js)
26122615
```ts

packages/core-js-compat/src/data.mjs

+8-5
Original file line numberDiff line numberDiff line change
@@ -1447,6 +1447,11 @@ export const data = {
14471447
firefox: '78',
14481448
safari: '11.1',
14491449
},
1450+
'es.regexp.escape': {
1451+
bun: '1.1.22',
1452+
firefox: '134',
1453+
safari: '18.2',
1454+
},
14501455
'es.regexp.dot-all': {
14511456
chrome: '62',
14521457
firefox: '78',
@@ -2537,11 +2542,8 @@ export const data = {
25372542
// TODO: Remove from `core-js@4`
25382543
'esnext.reflect.metadata': {
25392544
},
2540-
'esnext.regexp.escape': {
2541-
bun: '1.1.22',
2542-
firefox: '134',
2543-
safari: '18.2',
2544-
},
2545+
// TODO: Remove from `core-js@4`
2546+
'esnext.regexp.escape': null,
25452547
'esnext.set.add-all': {
25462548
},
25472549
'esnext.set.delete-all': {
@@ -3019,6 +3021,7 @@ export const renamed = new Map([
30193021
['esnext.promise.any', 'es.promise.any'],
30203022
['esnext.promise.try', 'es.promise.try'],
30213023
['esnext.promise.with-resolvers', 'es.promise.with-resolvers'],
3024+
['esnext.regexp.escape', 'es.regexp.escape'],
30223025
['esnext.set.difference.v2', 'es.set.difference.v2'],
30233026
['esnext.set.intersection.v2', 'es.set.intersection.v2'],
30243027
['esnext.set.is-disjoint-from.v2', 'es.set.is-disjoint-from.v2'],

packages/core-js-compat/src/modules-by-versions.mjs

+3
Original file line numberDiff line numberDiff line change
@@ -277,4 +277,7 @@ export default {
277277
'3.40': [
278278
'esnext.error.is-error',
279279
],
280+
3.41: [
281+
'es.regexp.escape',
282+
],
280283
};
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
'use strict';
2+
var parent = require('../../stable/regexp/escape');
23
require('../../modules/esnext.regexp.escape');
3-
var path = require('../../internals/path');
44

5-
module.exports = path.RegExp.escape;
5+
module.exports = parent;

packages/core-js/es/regexp/escape.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'use strict';
2+
require('../../modules/es.regexp.escape');
3+
var path = require('../../internals/path');
4+
5+
module.exports = path.RegExp.escape;

packages/core-js/es/regexp/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict';
22
require('../../modules/es.regexp.constructor');
3+
require('../../modules/es.regexp.escape');
34
require('../../modules/es.regexp.to-string');
45
require('../../modules/es.regexp.dot-all');
56
require('../../modules/es.regexp.exec');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
'use strict';
2+
var $ = require('../internals/export');
3+
var uncurryThis = require('../internals/function-uncurry-this');
4+
var aString = require('../internals/a-string');
5+
var hasOwn = require('../internals/has-own-property');
6+
var padStart = require('../internals/string-pad').start;
7+
var WHITESPACES = require('../internals/whitespaces');
8+
9+
var $Array = Array;
10+
// eslint-disable-next-line es/no-nonstandard-regexp-properties -- safe
11+
var $escape = RegExp.escape;
12+
var charAt = uncurryThis(''.charAt);
13+
var charCodeAt = uncurryThis(''.charCodeAt);
14+
var numberToString = uncurryThis(1.1.toString);
15+
var join = uncurryThis([].join);
16+
var FIRST_DIGIT_OR_ASCII = /^[0-9a-z]/i;
17+
var SYNTAX_SOLIDUS = /^[$()*+./?[\\\]^{|}]/;
18+
var OTHER_PUNCTUATORS_AND_WHITESPACES = RegExp('^[!"#%&\',\\-:;<=>@`~' + WHITESPACES + ']');
19+
var exec = uncurryThis(FIRST_DIGIT_OR_ASCII.exec);
20+
21+
var ControlEscape = {
22+
'\u0009': 't',
23+
'\u000A': 'n',
24+
'\u000B': 'v',
25+
'\u000C': 'f',
26+
'\u000D': 'r'
27+
};
28+
29+
var escapeChar = function (chr) {
30+
var hex = numberToString(charCodeAt(chr, 0), 16);
31+
return hex.length < 3 ? '\\x' + padStart(hex, 2, '0') : '\\u' + padStart(hex, 4, '0');
32+
};
33+
34+
// Avoiding the use of polyfills of the previous iteration of this proposal
35+
var FORCED = !$escape || $escape('ab') !== '\\x61b';
36+
37+
// `RegExp.escape` method
38+
// https://github.com/tc39/proposal-regex-escaping
39+
$({ target: 'RegExp', stat: true, forced: FORCED }, {
40+
escape: function escape(S) {
41+
aString(S);
42+
var length = S.length;
43+
var result = $Array(length);
44+
45+
for (var i = 0; i < length; i++) {
46+
var chr = charAt(S, i);
47+
if (i === 0 && exec(FIRST_DIGIT_OR_ASCII, chr)) {
48+
result[i] = escapeChar(chr);
49+
} else if (hasOwn(ControlEscape, chr)) {
50+
result[i] = '\\' + ControlEscape[chr];
51+
} else if (exec(SYNTAX_SOLIDUS, chr)) {
52+
result[i] = '\\' + chr;
53+
} else if (exec(OTHER_PUNCTUATORS_AND_WHITESPACES, chr)) {
54+
result[i] = escapeChar(chr);
55+
} else {
56+
var charCode = charCodeAt(chr, 0);
57+
// single UTF-16 code unit
58+
if ((charCode & 0xF800) !== 0xD800) result[i] = chr;
59+
// unpaired surrogate
60+
else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = escapeChar(chr);
61+
// surrogate pair
62+
else {
63+
result[i] = chr;
64+
result[++i] = charAt(S, i);
65+
}
66+
}
67+
}
68+
69+
return join(result, '');
70+
}
71+
});
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,3 @@
11
'use strict';
2-
var $ = require('../internals/export');
3-
var uncurryThis = require('../internals/function-uncurry-this');
4-
var aString = require('../internals/a-string');
5-
var hasOwn = require('../internals/has-own-property');
6-
var padStart = require('../internals/string-pad').start;
7-
var WHITESPACES = require('../internals/whitespaces');
8-
9-
var $Array = Array;
10-
// eslint-disable-next-line es/no-nonstandard-regexp-properties -- safe
11-
var $escape = RegExp.escape;
12-
var charAt = uncurryThis(''.charAt);
13-
var charCodeAt = uncurryThis(''.charCodeAt);
14-
var numberToString = uncurryThis(1.1.toString);
15-
var join = uncurryThis([].join);
16-
var FIRST_DIGIT_OR_ASCII = /^[0-9a-z]/i;
17-
var SYNTAX_SOLIDUS = /^[$()*+./?[\\\]^{|}]/;
18-
var OTHER_PUNCTUATORS_AND_WHITESPACES = RegExp('^[!"#%&\',\\-:;<=>@`~' + WHITESPACES + ']');
19-
var exec = uncurryThis(FIRST_DIGIT_OR_ASCII.exec);
20-
21-
var ControlEscape = {
22-
'\u0009': 't',
23-
'\u000A': 'n',
24-
'\u000B': 'v',
25-
'\u000C': 'f',
26-
'\u000D': 'r'
27-
};
28-
29-
var escapeChar = function (chr) {
30-
var hex = numberToString(charCodeAt(chr, 0), 16);
31-
return hex.length < 3 ? '\\x' + padStart(hex, 2, '0') : '\\u' + padStart(hex, 4, '0');
32-
};
33-
34-
// Avoiding the use of polyfills of the previous iteration of this proposal
35-
var FORCED = !$escape || $escape('ab') !== '\\x61b';
36-
37-
// `RegExp.escape` method
38-
// https://github.com/tc39/proposal-regex-escaping
39-
$({ target: 'RegExp', stat: true, forced: FORCED }, {
40-
escape: function escape(S) {
41-
aString(S);
42-
var length = S.length;
43-
var result = $Array(length);
44-
45-
for (var i = 0; i < length; i++) {
46-
var chr = charAt(S, i);
47-
if (i === 0 && exec(FIRST_DIGIT_OR_ASCII, chr)) {
48-
result[i] = escapeChar(chr);
49-
} else if (hasOwn(ControlEscape, chr)) {
50-
result[i] = '\\' + ControlEscape[chr];
51-
} else if (exec(SYNTAX_SOLIDUS, chr)) {
52-
result[i] = '\\' + chr;
53-
} else if (exec(OTHER_PUNCTUATORS_AND_WHITESPACES, chr)) {
54-
result[i] = escapeChar(chr);
55-
} else {
56-
var charCode = charCodeAt(chr, 0);
57-
// single UTF-16 code unit
58-
if ((charCode & 0xF800) !== 0xD800) result[i] = chr;
59-
// unpaired surrogate
60-
else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = escapeChar(chr);
61-
// surrogate pair
62-
else {
63-
result[i] = chr;
64-
result[++i] = charAt(S, i);
65-
}
66-
}
67-
}
68-
69-
return join(result, '');
70-
}
71-
});
2+
// TODO: Remove from `core-js@4`
3+
require('../modules/es.regexp.escape.js');
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
'use strict';
2+
var parent = require('../../es/regexp/escape');
3+
4+
module.exports = parent;

packages/core-js/stage/3.js

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ require('../proposals/float16');
99
require('../proposals/is-error');
1010
require('../proposals/json-parse-with-source');
1111
require('../proposals/math-sum');
12-
require('../proposals/regexp-escaping');
1312
// TODO: Obsolete versions, remove from `core-js@4`
1413
require('../proposals/array-grouping-stage-3');
1514
require('../proposals/array-grouping-stage-3-2');

packages/core-js/stage/4.js

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ require('../proposals/promise-all-settled');
1212
require('../proposals/promise-any');
1313
require('../proposals/promise-try');
1414
require('../proposals/promise-with-resolvers');
15+
require('../proposals/regexp-escaping');
1516
require('../proposals/relative-indexing-method');
1617
require('../proposals/set-methods-v2');
1718
require('../proposals/string-match-all');

tests/compat/tests.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1131,6 +1131,9 @@ GLOBAL.tests = {
11311131
&& RegExp('.', 's').exec('\n')
11321132
&& RegExp[Symbol.species];
11331133
}],
1134+
'es.regexp.escape': function () {
1135+
return RegExp.escape('ab') === '\\x61b';
1136+
},
11341137
'es.regexp.dot-all': function () {
11351138
return RegExp('.', 's').dotAll;
11361139
},
@@ -1833,9 +1836,6 @@ GLOBAL.tests = {
18331836
'esnext.number.from-string': function () {
18341837
return Number.fromString;
18351838
},
1836-
'esnext.regexp.escape': function () {
1837-
return RegExp.escape('ab') === '\\x61b';
1838-
},
18391839
'esnext.set.add-all': function () {
18401840
return Set.prototype.addAll;
18411841
},

tests/entries/unit.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ for (PATH of ['core-js-pure', 'core-js']) {
264264
ok('padEnd' in load(NS, 'string/virtual'));
265265
ok('raw' in load(NS, 'string'));
266266
ok(String(load(NS, 'regexp/constructor')('a', 'g')) === '/a/g');
267+
ok(load(NS, 'regexp/escape')('10$') === '\\x310\\$');
267268
ok(load(NS, 'regexp/to-string')(/./g) === '/./g');
268269
ok(load(NS, 'regexp/flags')(/./g) === 'g');
269270
ok(typeof load(NS, 'regexp/match') == 'function');
@@ -705,7 +706,6 @@ for (PATH of ['core-js-pure', 'core-js']) {
705706
ok(typeof load(NS, 'json/raw-json')(42) == 'object');
706707
ok(load(NS, 'math/f16round')(1.337) === 1.3369140625);
707708
ok(load(NS, 'math/sum-precise')([1, 2, 3]) === 6);
708-
ok(load(NS, 'regexp/escape')('10$') === '\\x310\\$');
709709
ok(load(NS, 'symbol/dispose'));
710710
ok(load(NS, 'symbol/metadata'));
711711
ok(new (load(NS, 'suppressed-error'))(1, 2).suppressed === 2);

tests/unit-pure/esnext.regexp.escape.js renamed to tests/unit-pure/es.regexp.escape.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable @stylistic/js/max-len -- ok*/
2-
import escape from 'core-js-pure/actual/regexp/escape';
2+
import escape from 'core-js-pure/es/regexp/escape';
33

44
QUnit.test('RegExp.escape', assert => {
55
assert.isFunction(escape);

0 commit comments

Comments
 (0)