我想用自定义格式验证ip地址:
我所期望的格式:ip address - any value - anynumber
上面的格式有四个部分:
( - ))示例: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地址(如我所期望的格式)?
发布于 2018-03-26 05:35:41
以下是一些你可以尝试的东西:
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!');<ul id="regex"></ul>
细目:
Regex:
/^(?=\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}$/regex有5个部分,它们几乎就是您列出的部分:
/^
(?=\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}
$/
发布于 2018-03-26 05:47:15

试试这个..。对我来说很管用
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)
}发布于 2018-03-26 06:03:16
通过解析字符串并测试每个部分,您将更容易遵循代码,并能够根据失败的测试返回错误,例如:
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)}`));
您可能希望抛出错误,而不是只返回带有错误消息的字符串。
https://stackoverflow.com/questions/49484384
复制相似问题