网站网址验证

时间:2018-07-04 11:21:56

标签: javascript regex typescript

我有这个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;
 }
}

2 个答案:

答案 0 :(得分:0)

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

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

祝你好运!

答案 1 :(得分:0)

尝试最好的代码。

$(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;
    }   
}