JavaScript(JS)是一种广泛使用的脚本语言,主要用于网页和网络应用开发。在JS中,可以通过各种方式获取和操作当前页面的URL,包括域名和IP地址。
可以使用window.location
对象获取当前页面的URL信息,包括协议、主机名(域名)、端口、路径等。
const currentUrl = window.location.href;
console.log(currentUrl);
从URL中提取域名可以通过解析window.location.hostname
来实现。
const domain = window.location.hostname;
console.log(domain);
可以通过正则表达式来判断一个字符串是否为有效的IP地址。
function isIP(str) {
const ipRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
return ipRegex.test(str);
}
console.log(isIP('192.168.1.1')); // true
console.log(isIP('example.com')); // false
当用户通过代理服务器访问时,window.location.hostname
可能返回代理服务器的地址,而不是用户的真实IP。可以通过HTTP头部的X-Forwarded-For
字段来获取真实IP。
// 注意:这种方法通常在服务器端实现,而不是在客户端JS中
const realIP = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
IPv6地址的格式与IPv4不同,需要调整正则表达式来匹配。
function isIP(str) {
const ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
const ipv6Regex = /^((?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,5}(?::[0-9A-Fa-f]{1,4}){1,2}|(?:[0-9A-Fa-f]{1,4}:){1,4}(?::[0-9A-Fa-f]{1,4}){1,3}|(?:[0-9A-Fa-f]{1,4}:){1,3}(?::[0-9A-Fa-f]{1,4}){1,4}|(?:[0-9A-Fa-f]{1,4}:){1,2}(?::[0-9A-Fa-f]{1,4}){1,5}|[0-9A-Fa-f]{1,4}:(?:(?::[0-9A-Fa-f]{1,4}){1,6})|:(?:(?::[0-9A-Fa-f]{1,4}){1,7}|:)|fe80:(?::[0-9A-Fa-f]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9A-Fa-f]{1,4}:){1,4}:(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;
return ipv4Regex.test(str) || ipv6Regex.test(str);
}
通过上述方法和代码示例,可以有效地在JavaScript中判断和处理域名和IP地址。
领取专属 10元无门槛券
手把手带您无忧上云