Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与http或www匹配的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 与http或www匹配的正则表达式

Javascript 与http或www匹配的正则表达式,javascript,regex,Javascript,Regex,我试图检查发送的URL是否以http或www开头,以下regexp始终返回true function checkFormat(url){ var validUrl=''; const regExp= new RegExp(/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/); if(

我试图检查发送的URL是否以http或www开头,以下regexp始终返回true

function checkFormat(url){
    var validUrl='';
    const regExp= new RegExp(/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/);
    if(regExp.test(url)){
        validUrl= url;
    }
    else{
        validUrl= 'http://'+url;
    }
    console.log(validUrl);
    return validUrl;
}
例如,如果我发送test.com,validul将是test.com。 如果我派人去,瓦利杜尔就会回来


我做错了什么?

我个人不会在这里使用正则表达式,这是不必要的

if ( url.startsWith("http://") || url.startsWith("www" ) {
将工作良好(只要你有一个polyfill为.startsWith)。要添加它,请执行以下操作:

const validUrl = url.startsWith("http://") ? url : `http://${url}`;

我个人不会在这里使用正则表达式,这是不必要的

if ( url.startsWith("http://") || url.startsWith("www" ) {
将工作良好(只要你有一个polyfill为.startsWith)。要添加它,请执行以下操作:

const validUrl = url.startsWith("http://") ? url : `http://${url}`;

示例中的表达式比您只需确定是否存在有效协议所需的表达式更复杂。一个更简单的表达式就足够了:

if (!/^http(s?):\/\//.test(url)) {
   url = 'http://' + url;
}

如果您需要验证整个结构(例如,必须存在有效的后缀),则应单独进行验证,因为当前这样做会导致附加一个意外的
'http://'
,例如,如果缺少
'.com'

示例中的表达式比您只需确定是否存在有效协议更复杂。一个更简单的表达式就足够了:

if (!/^http(s?):\/\//.test(url)) {
   url = 'http://' + url;
}

如果您需要验证整体结构(例如,必须存在有效的后缀),则应单独进行验证,因为当前情况下,如果缺少
'.com'
,则会附加一个意外的
'http://'

因此validul将与您提供给它的输入相同?顺便说一句,
“www”
不是协议,它是域网页的常见前缀,但它已经过时,甚至不受欢迎。以该url开头的url没有任何特殊情况。所以validUrl将与您输入的url相同?顺便说一句,
'www'
不是协议,它是域网页的常见前缀,但它非常过时,甚至不受欢迎。对于以这个开头的url,没有什么特别的事情发生。