如何使用正则表达式使用自定义格式验证IP地址

时间:2018-03-26 05:16:35

标签: javascript regex

我想用自定义格式验证IP地址:

我期望的格式: ip address - any value - anynumber

上面的格式有4个部分:

  1. ip address(包含有效的IP地址)
  2. 任何值(包含任何值)
  3. 任何数字(仅包含1至3位数字)
  4. 连接部分(包含空格,短划线,空格( - )
  5. 示例:213.39.59.78 - Public3 address.info - 24

    function customFormat(val) {
      return /^(?=\d+\.\d+\.\d+\.\d+$)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\.?){4}$/.test(val);
    }
    var testFormat = '192.68.35.35';
    document.getElementById('regex').innerHTML += testFormat + ' ' + (customFormat(testFormat) ? 'Valid Format!' : 'Invalid Format!');
    <ul id="regex"></ul>

    上面的代码使用了来自here的正则表达式,但只是验证了ip地址。

    如何验证我期望的格式的IP地址?

4 个答案:

答案 0 :(得分:1)

这是你可以尝试的东西:

&#13;
&#13;
function customFormat(val) {
  return /^(?=\d+\.\d+\.\d+\.\d+)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\.?){4} - ((?! -).)+ - \d{1,3}$/.test(val);
}
var testFormat = '213.39.59.78 - Public3 address.info - 24';
document.getElementById('regex').innerHTML += testFormat + ' ' + (customFormat(testFormat) ? 'Valid Format!' : 'Invalid Format!');
&#13;
<ul id="regex"></ul>
&#13;
&#13;
&#13;

故障:

正则表达式:

/^(?=\d+\.\d+\.\d+\.\d+)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\.?){4} - ((?! -).)+ - \d{1,3}$/

正则表达式有5个部分,几乎是你列出的部分:

  1. /^
    • 匹配字符串的开头
  2. (?=\d+\.\d+\.\d+\.\d+)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\.?){4}
    • ip address(包含有效的IP地址)
  3. -
    • 连接部分(包含空格,短划线,空格( - )
  4. ((?! -).)+
    • 任何值(包含任何值)
    • 重要:此部分使用前瞻并匹配一个或多个不是连接部分的字符。换句话说,它会匹配任何内容,直到找到-
  5. -
    • 连接部分(包含空格,短划线,空格( - )
  6. \d{1,3}
    • 任何数字(仅包含1至3位数字)
  7. $/
    • 字符串结束。

答案 1 :(得分:0)

功能验证IP地址(ipaddress){
  if(/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9])(25 [0-5] |?2 [0-4] [0-9] | [01 ?] [0-9] [0-9])(25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9]? )$ / .test(ipaddress)){
    返回(真)
  }
  提示(&#34;您输入了无效的IP地址!&#34;)
  返回(假)
}

答案 2 :(得分:0)

enter image description here试试这个...... 这个对我有用

function ValidateIPaddress(ipaddress) 
{
 if (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(myForm.emailAddr.value))
  {
    return (true)
  }
  alert("You have entered an invalid IP address!")
  return (false)
}

答案 3 :(得分:0)

通过解析字符串并测试每个部分,您将更容易遵循代码,并且能够根据错误返回错误,如果测试失败,例如:

function checkIP(s) {
  var t = s.split(' - ');

  // Test number of parts
  if (t.length != 3)
    return 'Error: format must be <IP address> - <string, no "-"> - <1 to 3 digits>: ' + s;

  // Test IP address
  if (!t[0].split('.').every(v => v >= 0 && v <= 255))
    return 'Error: IP address is invalid: ' + t[0];

  // Test trailing number
  if (!/^\d{1,3}$/.test(t[2])) 
    return 'Error: String must end with 1 to 3 digits: ' + t[2];

  // Must be valid
  return 'Valid string';
}

// Some tests
['213.39.59.78 - Public3 address.info - 222',
 '213.39.59.78 - Public3 address.info - 2222',
 '213.39.59.78 - Public3 address.info',
 '213.39.59.788 - Public3 address.info - 222'
].forEach(s => console.log(`Testing "${s}"\n ${checkIP(s)}`));

您可能希望抛出错误,而不是只返回带有错误消息的字符串。