Tôi đã cố chuyển đổi từ Python sang node.js. Đó là một cách đơn giản chương trình sử dụng regex để kiểm tra xem một địa chỉ IP là Public hay Private:Nội dung của một trận đấu RegExp
import re
def is_private_ip(ip):
"""
Returns `True` if the `ip` parameter is a private network address.
"""
c = re.compile('(^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)')
if c.match(ip): return True
return False
print is_private_ip('192.168.0.1') # True
print is_private_ip('8.8.8.8') # False
print is_private_ip('109.231.231.221') # False
tôi thực hiện nó trong Javascript như thế này:
var localIp = new RegExp(/(^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)/);
console.log('192.168.0.1'.match(localIp));
console.log('8.8.8.8'.match(localIp));
console.log('109.231.231.221'.match(localIp));
nào mang lại cho tôi kết quả như sau:
[ '192.168.',
undefined,
undefined,
undefined,
undefined,
undefined,
'192.168.',
index: 0,
input: '192.168.0.1' ]
null
null
Có vẻ như tôi thích nó hoạt động (thậm chí không chắc chắn tbh). Hai IP cần được công khai đang trả về null
vì vậy tôi đoán đúng. Tôi không hiểu đầu ra của trận đấu khác? Tôi không thể tìm hiểu ý nghĩa của nó là
.match() cung cấp cho bạn số lượng các kết quả có thể có trong Chuỗi của bạn. Có lẽ những gì bạn đang tìm kiếm là phương thức .test(). – Shivi