Jui*_*icy 5 javascript regex node.js
我一直在尝试将以下内容从Python转换为node.js. 这是一个简单的程序,使用正则表达式来检查IP地址是公共还是私有:
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
Run Code Online (Sandbox Code Playgroud)
我在Javascript中实现它,如下所示:
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));
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出:
[ '192.168.',
undefined,
undefined,
undefined,
undefined,
undefined,
'192.168.',
index: 0,
input: '192.168.0.1' ]
null
null
Run Code Online (Sandbox Code Playgroud)
在我看来它是有效的(甚至不确定tbh).应该公开的两个IP正在返回,null所以我猜这是正确的.我不明白其他比赛的输出了吗?我无法弄清楚它意味着什么
var localIp = new RegExp(/(^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)/);
Run Code Online (Sandbox Code Playgroud)
console.log('192.168.0.1'.match(localIp));
给你输出:
[ '192.168.',
undefined,
undefined,
undefined,
undefined,
undefined,
'192.168.']
Run Code Online (Sandbox Code Playgroud)
这意味着:
'192.168.'这是正则表达式在此字符串上的匹配。唯一的undefined是正则表达式中第一组的匹配:(^127\.0\.0\.1)undefined对于团体:(^10\.)undefined对于团体:(^172\.1[6-9]\.)undefined对于团体:(^172\.2[0-9]\.)undefined对于团体:(^172\.3[0-1]\.)'192.168.'对于团体:(^192\.168\.)这是因为括号,每个括号都给出一个匹配(或未定义),加上函数match()返回的匹配。
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |