# rescape
> Escape a [regular expression][mdn-regexp] string or pattern.
## Usage
```javascript
var rescape = require( '@stdlib/utils/escape-regexp-string' );
```
#### rescape( str )
Escapes a [regular expression][mdn-regexp] `string` or pattern.
```javascript
var str = rescape( '/[A-Z]*/' );
// returns '/\\[A\\-Z\\]\\*/'
str = rescape( '[A-Z]*' );
// returns '\\[A\\-Z\\]\\*'
```
If provided a value which is not a primitive `string`, the function **throws** a `TypeError`.
```javascript
try {
rescape( null );
// throws an error...
} catch ( err ) {
console.error( err );
}
```
- The following characters have special meaning inside of regular expressions and need to be escaped in case the characters should be treated literally:
| description | value |
| ------------- | -------- |
| Backslash | `\` |
| Braces | `{ }` |
| Brackets | `[ ]` |
| Caret | `^` |
| Dollar Sign | `$` |
| Forward Slash | `/` |
| Asterisk | `*` |
| Parentheses | `( )` |
| Period | `.` |
| Plus Sign | `+` |
| Vertical Bar | `|` |
| Question Mark | `?` |
## Examples
```javascript
var rescape = require( '@stdlib/utils/escape-regexp-string' );
var out = rescape( '/beep/' );
// returns '/beep/'
out = rescape( 'beep' );
// returns 'beep'
out = rescape( '/[A-Z]*/' );
// returns '/\\[A\\-Z\\]\\*/'
out = rescape( '[A-Z]*' );
// returns '\\[A\\-Z\\]\\*'
out = rescape( '/\\\//ig' );
// returns '/\\\\\\\//ig'
out = rescape( '\\\/' );
// returns '\\\\\\\/'
out = rescape( '/[A-Z]{0,}/' );
// returns '/\\[A\\-Z\\]\\{0,\\}/'
out = rescape( '[A-Z]{0,}' );
// returns '\\[A\\-Z\\]\\{0,\\}'
out = rescape( '/^boop$/' );
// returns '/\\^boop\\$/'
out = rescape( '^boop$' );
// returns '\\^boop\\$'
out = rescape( '/(?:.*)/' );
// returns '/\\(\\?:\\.\\*\\)/'
out = rescape( '(?:.*)' );
// returns '\\(\\?:\\.\\*\\)'
out = rescape( '/(?:beep|boop)/' );
// returns '/\\(\\?:beep\\|boop\\)/'
out = rescape( '(?:beep|boop)' );
// returns '\\(\\?:beep\\|boop\\)'
```
[mdn-regexp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions