我正在尝试编写一个验证IPv4地址的函数。
一切似乎都没问题,但似乎找不到正确的课程。
我的代码在这里:http://jsfiddle.net/felix001/X7EuJ/23/
<label for="input">IP</label>
<input type="text" name="input" id="input" size="22" />
<input type="submit" value="submit" "whatmask_input" id="submit" align="right" />
JavaScript的:
function ipv4addr(x) {
var REGEX = /^(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]?)$/;
if ($x != $REGEX) {
$("#input").addClass(".bad");
}
else {
$("#input").addClass(".good");
}
}
$(document).ready(function() {
$("#submit").click(ipv4addr("#input"));
});
有人能告诉我解决此问题的最佳方法吗?
谢谢,
答案 0 :(得分:2)
在您打开fiddler页面的同时加载浏览器的开发工具控制台(例如,在Chrome中)。
第一个错误是:
ReferenceError: Can't find variable: $x
不需要在变量名前加上$,$foo
和foo
是两个不同的变量名。如果您有var foo
,则foo
是变量名称。
看看代码,这可能不符合你的期望:
$("#submit").click(ipv4addr("#input"));
这与:
相同var result = ipv4addr("#input");
$("#submit").click(result);
也就是说,将调用ipv4addr
(始终未定义)的返回值传递给click方法。您可能希望传递一个函数来代替每次点击调用。
答案 1 :(得分:1)
尝试此功能:
function isDottedIPv4(s)
{
var match = s.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
return match != null &&
match[1] <= 255 && match[2] <= 255 &&
match[3] <= 255 && match[4] <= 255;
}
isDottedIPv4("127.0.0.001") // true
isDottedIPv4("448.90210.0.65535") // false
isDottedIPv4("microsoft.com") // false