javascript - 无法在 JavaScript 中匹配 IP 正则表达式

标签 javascript regex

以下是我的代码,我试图在前端验证 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] 范围包含从 xy 的所有 ascii 字符。

因此 [0-255] 匹配从 02 的字符(又名 0 12) 和 5 或简而言之 - [0125]


要匹配从 0255 的数字,您可以这样做:

\d\d?|1\d\d|2([0-4]\d|5[0-5])

想法:

  • \d\d? - 一位或两位数
  • 1\d\d - 从 100199
  • 的数字
  • 2[0-4]\d - 从 200249 的数字。
  • 25[0-5] - 从 250255
  • 的数字

要匹配整个 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/

相关文章:

javascript - 设置 Sails js View 扩展不起作用

c# - 如何将字符串中的 [city] 替换为 [City]

javascript - 如何在我的计算器中存储结果和查看以前的计算结果?

javascript - Meteor 无法从 json 文件加载设置

Java正则表达式捕获字符串

jQuery 验证正则表达式以禁止数字和特殊字符

regex - sed regex - 将标题大小写转换为驼峰大小写

sql - 如何加快 Oracle SQL Developer 上的 REGEX LEVEL 查询速度

javascript - 多个条件与多个语句

javascript - Kendo DropDownList 焦点上的工具提示