|
| 1 | +/** |
| 2 | + * 468. Validate IP Address |
| 3 | + * https://leetcode.com/problems/validate-ip-address/ |
| 4 | + * Difficulty: Medium |
| 5 | + * |
| 6 | + * Given a string queryIP, return "IPv4" if IP is a valid IPv4 address, "IPv6" if IP is a valid |
| 7 | + * IPv6 address or "Neither" if IP is not a correct IP of any type. |
| 8 | + * |
| 9 | + * A valid IPv4 address is an IP in the form "x1.x2.x3.x4" where 0 <= xi <= 255 and xi cannot |
| 10 | + * contain leading zeros. For example, "192.168.1.1" and "192.168.1.0" are valid IPv4 addresses |
| 11 | + * while "192.168.01.1", "192.168.1.00", and "[email protected]" are invalid IPv4 addresses. |
| 12 | + * |
| 13 | + * A valid IPv6 address is an IP in the form "x1:x2:x3:x4:x5:x6:x7:x8" where: |
| 14 | + * - 1 <= xi.length <= 4 |
| 15 | + * - xi is a hexadecimal string which may contain digits, lowercase English letter ('a' to 'f') |
| 16 | + * and upper-case English letters ('A' to 'F'). |
| 17 | + * - Leading zeros are allowed in xi. |
| 18 | + * |
| 19 | + * For example, "2001:0db8:85a3:0000:0000:8a2e:0370:7334" and "2001:db8:85a3:0:0:8A2E:0370:7334" |
| 20 | + * are valid IPv6 addresses, while "2001:0db8:85a3::8A2E:037j:7334" and |
| 21 | + * "02001:0db8:85a3:0000:0000:8a2e:0370:7334" are invalid IPv6 addresses. |
| 22 | + */ |
| 23 | + |
| 24 | +/** |
| 25 | + * @param {string} queryIP |
| 26 | + * @return {string} |
| 27 | + */ |
| 28 | +var validIPAddress = function(queryIP) { |
| 29 | + const ipv4 = /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/; |
| 30 | + const ipv6 = /^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$/; |
| 31 | + |
| 32 | + return ipv4.test(queryIP) ? 'IPv4' : ipv6.test(queryIP) ? 'IPv6' : 'Neither'; |
| 33 | +}; |
0 commit comments