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

时间:2011-12-20 15:34:56

标签: jquery regex

您好我写了一个正则表达式来验证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")

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

1 个答案:

答案 0 :(得分:6)

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

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

您可以这样继续:

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

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

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

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