【问题标题】:Website URL validation网站 URL 验证
【发布时间】:2018-07-04 11:21:55
【问题描述】:

我有这个 URL 验证器代码, 它在输入例如“www.wwww.www”或“wwww.wwwww”时通过 当像这样“wwww.wwwww.”最后添加点时,它不会通过。当我们填写像“wwww.wwwww”这样的值时,不需要它通过。我应该如何更改代码?

export class WebsiteValidator {
public static validate(control: AbstractControl) {
const URL_REGEXP = /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)? 
 [a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/;
 return (control.value && !URL_REGEXP.test(control.value)) ? {
    validateUrl: {
      valid: false
    }
  } : null;
 }
}

【问题讨论】:

  • wwww.wwwww 实际上可能是一个有效的域名,前提是有人出于某种不明原因将 wwwww 注册为 TLD 或某个本地网络域。

标签: javascript regex typescript


【解决方案1】:

您为什么要自己实现验证器?这是一个非常棘手的问题,也是一个已解决的问题。

除非您是为了好玩,否则我建议您使用现有的验证器之一,例如 this one。如果您对正则表达式的外观感兴趣,可以在this gist 中找到它。

祝你好运!

【讨论】:

    【解决方案2】:

    试试这个最好的代码。

    $(document).ready(function () {
    
        $('input').keyup(function() {
            var $th = $(this);
    
            if (isValidUrl($th.val())==1){
                alert("got a valid url!");   
            }else
            {
             alert("got a novalid url!");   
            }
    
        });
    });
    
    
    function isValidUrl(url){
    
     var myVariable = url;
        if(/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(myVariable)) {
          return 1;
        } else {
          return -1;
        }   
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 2011-06-22
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 2012-03-24
      • 2016-07-31
      • 2011-11-23
      相关资源
      最近更新 更多