正则表达式如何排除输入其他URL而不是域URL

Evl*_*ark 1 regex jquery

您好我写了一个正则表达式来验证URL

jQuery.validator.addMethod("url_validation", function (value, element) {
    return this.optional(element) || /^([ \t+])?(([http|https|HTTPS|HTTP]+:\/\/))?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/i.test(value);
}, "error")
Run Code Online (Sandbox Code Playgroud)

进入域后我无法找到防止输入任何内容的方法:例如: - "http://www.mydomain.uk/whateverthing.ext"我想停止进入"进入域名后的转换".我不能找出解决这个问题的方法.任何人都可以给我一个帮助吗?"(这将包括验证URL)

fge*_*fge 6

好的,所以你想要两件事:

  • 验证主机名;
  • 验证/,if/there之后的部分是否为空.

你可以这样继续:

  • 验证您的输入^https?://([a-z0-9-]+(?:\.[a-z0-9-]+)*)/?(.*);
  • 如果上述内容不匹配,则表示网址无效;
  • 抢组2:如果非空,则表示非空路径,URL无效;
  • 抓住第1组并将其拆分\..
  • 验证所有组的长度是否<= 255 匹配^[a-z0-9]+(-[a-z0-9]+)*$:如果不是,则URL无效.

这不会占用主机名部分的IP地址......

无论如何,我很惊讶jQuery没有方法来检查它.你看了吗?

编辑:它有:http://docs.jquery.com/Plugins/Validation/Methods/url