You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					26 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					26 lines
				
				1.0 KiB
			| 
											11 months ago
										 | 'use strict'; | ||
|  | var $ = require('../internals/export'); | ||
|  | var uncurryThis = require('../internals/function-uncurry-this'); | ||
|  | var toString = require('../internals/to-string'); | ||
|  | var padStart = require('../internals/string-pad').start; | ||
|  | var WHITESPACES = require('../internals/whitespaces'); | ||
|  | 
 | ||
|  | var charCodeAt = uncurryThis(''.charCodeAt); | ||
|  | var replace = uncurryThis(''.replace); | ||
|  | var numberToString = uncurryThis(1.1.toString); | ||
|  | var NEED_ESCAPING = RegExp('[!"#$%&\'()*+,\\-./:;<=>?@[\\\\\\]^`{|}~' + WHITESPACES + ']', 'g'); | ||
|  | 
 | ||
|  | // `RegExp.escape` method
 | ||
|  | // https://github.com/tc39/proposal-regex-escaping
 | ||
|  | $({ target: 'RegExp', stat: true, forced: true }, { | ||
|  |   escape: function escape(S) { | ||
|  |     var str = toString(S); | ||
|  |     var firstCode = charCodeAt(str, 0); | ||
|  |     // escape first DecimalDigit
 | ||
|  |     return (firstCode > 47 && firstCode < 58 ? '\\x3' : '') + replace(str, NEED_ESCAPING, function (match) { | ||
|  |       var hex = numberToString(charCodeAt(match, 0), 16); | ||
|  |       return hex.length < 3 ? '\\x' + padStart(hex, 2, '0') : '\\u' + padStart(hex, 4, '0'); | ||
|  |     }); | ||
|  |   } | ||
|  | }); |