【问题标题】:textbox validation accepting IPs in javascript文本框验证接受 javascript 中的 IP
【发布时间】:2011-09-28 14:46:54
【问题描述】:

我想要一个验证函数,它必须接受 3 种类型:

var
portvar
ipvar

我的一个问题是在 IPvar 用户输入必须采用以下语法,例如:

[192.168.1.0/24,10.1.1.0/24]

我怎样才能从文本框中接受这样的 Ips?

【问题讨论】:

    标签: javascript textbox ip


    【解决方案1】:

    你可以用这样的正则表达式来检查它:

    var textVal = ...;
    if ((/^\[(?!,)(,?(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\/[1-9]\d*)+\]$/).test(textVal)) {
      alert('Valid!');
    }
    else {
      alert('Invalid!');
    }
    

    正则表达式标识有效 IP,IP 的每一部分都是 0 到 255 之间的数字。此外,如您的示例所示,每个 IP 必须后跟一个 /,然后是一个表示子网掩码的数字。最后,多个 IP 用逗号分隔(但是正则表达式不允许在开头或结尾使用逗号)。

    (顺便说一下,您示例中的第二个 IP 地址无效)。

    【讨论】:

    • 在/之后不是子网掩码吗?
    • 如果我不再输入逗号,它会告诉你有效
    • 你能告诉我这些是什么吗?(/^[(?!,)
    • /^\[(?!,) 表示该行必须以括号开头,并且不应紧跟逗号。
    • 我明白了,谢谢 jerluc,你能告诉我 25[0-5] 是指 250 到 255 吗? {3} 是什么?和符号 =>:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多