is-in-subnet
Version:
Check if an IPv4 or IPv6 address is contained in the given CIDR subnet
81 lines (51 loc) • 2.72 kB
Markdown
# is-in-subnet [](https://www.npmjs.com/package/is-in-subnet) [](https://www.npmjs.com/package/is-in-subnet) [](https://github.com/natesilva/is-in-subnet/blob/master/LICENSE) [](https://www.npmjs.com/package/p-ratelimit)
Check if an IPv4 or IPv6 address is contained in the given [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) subnet.
- Small
- Fast
- Simple syntax
- Full test coverage
- TypeScript-friendly
- Zero dependencies
- 🆕 [Browser-friendly](#in-a-browser)
See the 📖 [Reference](doc/reference.md) page for complete documentation.
## Installation
### With Node.js
`npm install is-in-subnet`
### In a browser
This module is compatible with Browserify and other bundling tools. If you prefer to load it as a single file from a CDN:
- <https://cdn.jsdelivr.net/npm/is-in-subnet@4/browser/isInSubnet.js>
- <https://cdn.jsdelivr.net/npm/is-in-subnet@4/browser/isInSubnet.min.js>
The module is loaded as a global named `isInSubnet`.
## Basic Usage
### Node.js
```javascript
const { isInSubnet } = require('is-in-subnet');
console.log(isInSubnet('10.5.0.1', '10.4.5.0/16')); // false
console.log(isInSubnet('10.5.0.1', '10.4.5.0/15')); // true
console.log(isInSubnet('2001:db8:f53a::1', '2001:db8:f53b::1:1/48')); // false
console.log(isInSubnet('2001:db8:f53a::1', '2001:db8:f531::1:1/44')); // true
```
### Browser
```javascript
console.log(isInSubnet.isInSubnet('10.5.0.1', '10.4.5.0/16'));
// if you don’t like that syntax, you may use this instead:
console.log(isInSubnet.check('10.5.0.1', '10.4.5.0/16'));
```
## More ways to use it
### Test multiple subnets at once
- You can pass an array instead of a single subnet.
```javascript
const inAnySubnet = isInSubnet('10.5.0.1', ['10.4.5.0/16', '192.168.1.0/24']);
```
### Amortise the parsing cost using a functional version
- `createChecker(subnetOrSubnets)` returns a function used to check an address
```javascript
const checker = createChecker(['10.4.5.0/16', '192.168.1.0/24']);
console.log(checker('10.5.0.1')); // true
```
### Test for special types of addresses
- `isPrivate(address)` — Private addresses (like `192.168.0.0`)
- `isLocalhost(address)` — Localhost addresses (like `::1`)
And more. See the [documentation](doc/reference.md#testing-for-special-address-ranges).
### Check if an address is valid
- `isIPv4(address)`, `isIPv6(address)`, `isIP(address)` — works just like the similarly-named functions in Node’s `net` module.