Skip to content

Latest commit

 

History

History
80 lines (51 loc) · 2.66 KB

README.md

File metadata and controls

80 lines (51 loc) · 2.66 KB

is-in-subnet npm dependencies license node

Check if an IPv4 or IPv6 address is contained in the given CIDR subnet.

  • Small
  • Fast
  • Simple syntax
  • Full test coverage
  • TypeScript-friendly
  • Zero dependencies
  • 🆕 Browser-friendly

See the 📖 Reference 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:

The module is loaded as a global named isInSubnet.

Basic Usage

Node.js

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

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.
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
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.

Check if an address is valid

  • isIPv4(address), isIPv6(address), isIP(address) — works just like the similarly-named functions in Node’s net module.