You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
2 years ago
|
exports = function(str) {
|
||
|
return exports.v4(str) || exports.v6(str);
|
||
|
};
|
||
|
|
||
|
var v4 =
|
||
|
'(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}';
|
||
|
var regV4 = new RegExp('^'.concat(v4, '$'));
|
||
|
var v6seg = '[a-fA-F\\d]{1,4}';
|
||
|
var v6 = [
|
||
|
'(',
|
||
|
'(?:'.concat(v6seg, ':){7}(?:').concat(v6seg, '|:)|'),
|
||
|
'(?:'
|
||
|
.concat(v6seg, ':){6}(?:')
|
||
|
.concat(v4, '|:')
|
||
|
.concat(v6seg, '|:)|'),
|
||
|
'(?:'
|
||
|
.concat(v6seg, ':){5}(?::')
|
||
|
.concat(v4, '|(:')
|
||
|
.concat(v6seg, '){1,2}|:)|'),
|
||
|
'(?:'
|
||
|
.concat(v6seg, ':){4}(?:(:')
|
||
|
.concat(v6seg, '){0,1}:')
|
||
|
.concat(v4, '|(:')
|
||
|
.concat(v6seg, '){1,3}|:)|'),
|
||
|
'(?:'
|
||
|
.concat(v6seg, ':){3}(?:(:')
|
||
|
.concat(v6seg, '){0,2}:')
|
||
|
.concat(v4, '|(:')
|
||
|
.concat(v6seg, '){1,4}|:)|'),
|
||
|
'(?:'
|
||
|
.concat(v6seg, ':){2}(?:(:')
|
||
|
.concat(v6seg, '){0,3}:')
|
||
|
.concat(v4, '|(:')
|
||
|
.concat(v6seg, '){1,5}|:)|'),
|
||
|
'(?:'
|
||
|
.concat(v6seg, ':){1}(?:(:')
|
||
|
.concat(v6seg, '){0,4}:')
|
||
|
.concat(v4, '|(:')
|
||
|
.concat(v6seg, '){1,6}|:)|'),
|
||
|
'(?::((?::'
|
||
|
.concat(v6seg, '){0,5}:')
|
||
|
.concat(v4, '|(?::')
|
||
|
.concat(v6seg, '){1,7}|:))'),
|
||
|
')(%[0-9a-zA-Z]{1,})?'
|
||
|
].join('');
|
||
|
var regV6 = new RegExp('^'.concat(v6, '$'));
|
||
|
exports.v4 = function(str) {
|
||
|
return regV4.test(str);
|
||
|
};
|
||
|
exports.v6 = function(str) {
|
||
|
return regV6.test(str);
|
||
|
};
|
||
|
|
||
|
module.exports = exports;
|