775ac7b58c
you must login with an BTP account in order to see the app
62 lines
No EOL
2.8 KiB
JavaScript
62 lines
No EOL
2.8 KiB
JavaScript
import assertString from './util/assertString';
|
|
/**
|
|
11.3. Examples
|
|
|
|
The following addresses
|
|
|
|
fe80::1234 (on the 1st link of the node)
|
|
ff02::5678 (on the 5th link of the node)
|
|
ff08::9abc (on the 10th organization of the node)
|
|
|
|
would be represented as follows:
|
|
|
|
fe80::1234%1
|
|
ff02::5678%5
|
|
ff08::9abc%10
|
|
|
|
(Here we assume a natural translation from a zone index to the
|
|
<zone_id> part, where the Nth zone of any scope is translated into
|
|
"N".)
|
|
|
|
If we use interface names as <zone_id>, those addresses could also be
|
|
represented as follows:
|
|
|
|
fe80::1234%ne0
|
|
ff02::5678%pvc1.3
|
|
ff08::9abc%interface10
|
|
|
|
where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs
|
|
to the 5th link, and "interface10" belongs to the 10th organization.
|
|
* * */
|
|
|
|
var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
|
|
var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat);
|
|
var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$"));
|
|
var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';
|
|
var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z-.:]{1,})?$');
|
|
export default function isIP(str) {
|
|
var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
assertString(str);
|
|
version = String(version);
|
|
|
|
if (!version) {
|
|
return isIP(str, 4) || isIP(str, 6);
|
|
}
|
|
|
|
if (version === '4') {
|
|
if (!IPv4AddressRegExp.test(str)) {
|
|
return false;
|
|
}
|
|
|
|
var parts = str.split('.').sort(function (a, b) {
|
|
return a - b;
|
|
});
|
|
return parts[3] <= 255;
|
|
}
|
|
|
|
if (version === '6') {
|
|
return !!IPv6AddressRegExp.test(str);
|
|
}
|
|
|
|
return false;
|
|
} |