以下是我的代码,我试图在前端验证 IP 地址,但不知何故这个 Regex 不起作用 -
var patt = /[0-255]\.[0-255]\.[0-255]\.[0-255]/;
var str = "90.89.99.90";
if(str.match(patt))
console.log("Valid IP");
else
console.log("Invalid IP");
它应该输出 - 有效 IP
虽然这些类型的 IP 应该返回 - Invalid IP
"fd.45.67.90", "256.67.67.89", "@@.45.67.90" etc
让我知道我在使用正则表达式时做错了什么。
最佳答案
正则表达式范围并不像您认为的那样。 [x-y]
范围包含从 x
到 y
的所有 ascii 字符。
因此 [0-255]
匹配从 0
到 2
的字符(又名 0
, 1
和 2
) 和 5
或简而言之 - [0125]
。
要匹配从 0
到 255
的数字,您可以这样做:
\d\d?|1\d\d|2([0-4]\d|5[0-5])
想法:
\d\d?
- 一位或两位数1\d\d
- 从100
到199
的数字
2[0-4]\d
- 从200
到249
的数字。25[0-5]
- 从250
到255
的数字
要匹配整个 IP,您可以这样做:
^((\d\d?|1\d\d|2([0-4]\d|5[0-5]))\.){3}(\d\d?|1\d\d|2([0-4]\d|5[0-5]))$
关于javascript - 无法在 JavaScript 中匹配 IP 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34579640/