正则表达式检查网址不起作用

时间:2015-02-07 16:39:40

标签: regex

我在下面的正则表达式中添加了以检​​查它是否是url:

function checkurl(url){
var regex = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
if(!$.trim(url).match(regex)){
        //alert("Not Valid Url");
        alert('Not Valid Url');
        return false;
}

这适用于大多数网址,但对于以下网址,它显示错误:

https://www.youtube.com/watch?v=wEQi87xSIgU

3 个答案:

答案 0 :(得分:2)

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([?=\/\w \.-]*)\/?$

                                              ^^          ^^

试试这个。看看demo.Added ?=到字符类。还删除了*)*,这会导致灾难性的回溯。

https://regex101.com/r/wX9fR1/7

答案 1 :(得分:1)

您需要在上一个字符类中添加更多字符以支持查询字符串,即?&=

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([?=&\/\w \.-]*)*\/?$

RegEx Demo

答案 2 :(得分:1)

它不适用于该网址,因为它有一个查询字符串(?v=wEQi87xSIgU)。

$

之前添加此内容
(\?[^#]*)?(#.*)?

这将匹配查询字符串和哈希值。