JS正则表达式检查网址

时间:2015-01-28 14:36:38

标签: javascript regex

这必须被问过一百万次,但我无法找到符合我需求的解决方案。

我需要正则表达式来检查一个字符串是否包含一个url,然后得到它。所以我有这个:

    var regexToken = /(((ftp|https?):\/\/)[\-\w@:%_\+.~#?,&\/\/=]+)|((mailto:)?[_.\w-]+@([\w][\w\-]+\.)+[a-zA-Z]{2,3})/g;

    while( (matchArray = regexToken.exec( source )) !== null )
    {
        var result = matchArray[0];

    }

    return result;

这可以检索:

但我需要修改它,以便它还可以检索刚刚以www:

开头的网址
  • www.domain.com/with/path

怎么做?我和正则表达式相比真的很棒...

2 个答案:

答案 0 :(得分:0)

这样的事情可能有所帮助:

/(((ftp|https?):\/\/|www\.)[continue from here]/

这将启动允许ftp://http://https://www.

的匹配

答案 1 :(得分:0)

尝试这种方式匹配不同格式的网址。赞,

 var re = /^((ftp|https?):\/\/|www\.).*/gm;
    var str = 'http://domain.com\nhttps://domain.com\nftp://domain.com\nftp://www.domain.com\nhttp://www.domain.com\nhttps://www.domain.com\nhttp://www.domain.com/with/path\nhttps://www.domain.com/with/path\nftp://www.domain.com/with/path\nwww.domain.com/with/path \n\n';
    var m;

    while ((m = re.exec(str)) != null) {
    if (m.index === re.lastIndex) {
    re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
    }

enter image description here

DEMO