首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ip和http的jquery验证

使用ip和http的jquery验证
EN

Stack Overflow用户
提问于 2012-04-01 08:51:26
回答 3查看 1.1K关注 0票数 0

我有一个字段,人们在那里输入他们的IP。因此,我尝试使用jquery验证该字段:

代码语言:javascript
运行
复制
$.validator.addMethod("http-ipvalidation", 
    function(value, element) {
        return /^[\d.]+$/.test(value);
    }, 
   "Sorry, only numbers and dots allowed here"
);

但有些人正在使用DynDNS,这样就可以使用url了。所以现在我需要同时允许这两种情况。有没有办法把默认的jquery url验证和我的自定义IP验证结合起来?

我可以修改jquery的url检查,但是这个正则表达式太疯狂了,所以我不知道从哪里开始:

代码语言:javascript
运行
复制
return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(val);

另外,我认为允许人们在没有http(s)://的情况下进入网站会很好。总而言之,我想创建验证,用户可以在其中输入:

12.34.56.78my.domain.comhttp://my.domain.com

也许,我应该只做一个简单的验证,去掉一些特殊的字符,然后就不做了?提前谢谢。

EN

Stack Overflow用户

发布于 2012-04-01 09:12:59

这可能会稍微回避这个问题,但我可能会把它留给像ping、curl或nslookup这样的unix程序。我不知道你是否出于其他原因想这样做,但我认为它会行得通。

代码语言:javascript
运行
复制
$.validator.addMethod("http-ipvalidation", 
    function(value, element) {
      result = false
      $.getJSON({async:false,url:verify.php,success:function(resp){result=resp.result}})
      return result;
    }, 
  "Sorry, ip address invalid"
);

在verify.php中,你会有类似这样的东西:Ping site and return result in PHP

代码语言:javascript
运行
复制
$ch = curl_init($url);  
curl_setopt($ch, CURLOPT_TIMEOUT, 5);  
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
$data = curl_exec($ch);  
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
curl_close($ch);  
if($httpcode>=200 && $httpcode<300) {  
    return true;  
} else {  
    return false;  
}

这样,无论他们输入的ip地址是否无效,或者如果它不是真实的IP地址,它都会抛出一个错误。我不知道这是不是你想要的行为。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9961012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档