Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
45f4ab5
commit f71137e
Showing
3 changed files
with
88 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
declare namespace ip { | ||
interface Options { | ||
/** | ||
Only match an exact string. Useful with `RegExp#test()` to check if a string is an IP address. *(`false` matches any IP address in a string)* | ||
@default false | ||
*/ | ||
readonly exact?: boolean; | ||
|
||
/** | ||
Include boundaries in the regex. When `true`, `192.168.0.2000000000` will report as an invalid IPv4 address. If this option is not set, the mentioned IPv4 address would report as valid (ignoring the trailing zeros). | ||
@default false | ||
*/ | ||
readonly includeBoundaries?: boolean; | ||
} | ||
} | ||
|
||
declare const ip: { | ||
/** | ||
Regular expression for matching IP addresses. | ||
@returns A regex for matching both IPv4 and IPv6. | ||
@example | ||
``` | ||
import ipRegex = require('ip-regex'); | ||
// Contains an IP address? | ||
ipRegex().test('unicorn 192.168.0.1'); | ||
//=> true | ||
// Is an IP address? | ||
ipRegex({exact: true}).test('unicorn 192.168.0.1'); | ||
//=> false | ||
'unicorn 192.168.0.1 cake 1:2:3:4:5:6:7:8 rainbow'.match(ipRegex()); | ||
//=> ['192.168.0.1', '1:2:3:4:5:6:7:8'] | ||
// Contains an IP address? | ||
ipRegex({includeBoundaries: true}).test('192.168.0.2000000000'); | ||
//=> false | ||
// Matches an IP address? | ||
'192.168.0.2000000000'.match(ipRegex({includeBoundaries: true})); | ||
//=> null | ||
``` | ||
*/ | ||
(options?: ip.Options): RegExp; | ||
|
||
/** | ||
@returns A regex for matching IPv4. | ||
*/ | ||
v4(options?: ip.Options): RegExp; | ||
|
||
/** | ||
@returns A regex for matching IPv6. | ||
@example | ||
``` | ||
import ipRegex = require('ip-regex'); | ||
ipRegex.v6({exact: true}).test('1:2:3:4:5:6:7:8'); | ||
//=> true | ||
``` | ||
*/ | ||
v6(options?: ip.Options): RegExp; | ||
}; | ||
|
||
export = ip; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import {expectType} from 'tsd'; | ||
import ipRegex = require('.'); | ||
|
||
const options: ipRegex.Options = {}; | ||
expectType<RegExp>(ipRegex()); | ||
expectType<RegExp>(ipRegex({exact: true})); | ||
expectType<RegExp>(ipRegex({includeBoundaries: true})); | ||
expectType<RegExp>(ipRegex.v4()); | ||
expectType<RegExp>(ipRegex.v4({exact: true})); | ||
expectType<RegExp>(ipRegex.v4({includeBoundaries: true})); | ||
expectType<RegExp>(ipRegex.v6()); | ||
expectType<RegExp>(ipRegex.v6({exact: true})); | ||
expectType<RegExp>(ipRegex.v6({includeBoundaries: true})); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters