如何在没有http的情况下进行网址验证(或在验证通过后添加)?

skr*_*lyk 0 url jquery-validate

我无法使自定义网址验证规则生效。

我要添加新规则:

 jQuery.validator.addMethod("complete_url", function(val, elem) {
// if no url, don't do anything
  return  /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/.test(val);
    });
 ...
 $("#new_website").validate({
    rules: {
          url: "complete_url",
         'website[url]': {
            url: true,
            required: true}
           }
        });
Run Code Online (Sandbox Code Playgroud)

但这让我回来

   invalid URL
Run Code Online (Sandbox Code Playgroud)

我检查了正则表达式在这里- http://www.rubular.com/。它正在工作,但是失败了我的自定义验证器。

我做错了什么?

小智 6

请不要为此使用正则表达式。甚至不要使用jQuery验证程序使用的正则表达式,将来它可能会更改,您将无法利用更新。这是这样做的方法:

$.validator.addMethod('validUrl', function(value, element) {
        var url = $.validator.methods.url.bind(this);
        return url(value, element) || url('http://' + value, element);
    }, 'Please enter a valid URL');
Run Code Online (Sandbox Code Playgroud)