在javascript中匹配特定url
我试图在javascript上匹配youtube和vimeo URL。我正在使用regexr进行游戏,并得出以下结论:在javascript中匹配特定url,javascript,regex,Javascript,Regex,我试图在javascript上匹配youtube和vimeo URL。我正在使用regexr进行游戏,并得出以下结论: (http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+ 它在regexr上运行得非常好,匹配中不包含空格,因此它只匹配以下内容: http://youtu.be/ssdfsjlfsfsl 而不是这个: http://youtu.be/ssdfsjl someword 但
(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+
它在regexr上运行得非常好,匹配中不包含空格,因此它只匹配以下内容:
http://youtu.be/ssdfsjlfsfsl
而不是这个:
http://youtu.be/ssdfsjl someword
但当我在javascript上测试它时,它仍然会将url与一个空格和旁边的另一个单词匹配:
var x = new RegExp("(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+")
x.test("http://www.youtube.com/watch?v=FvYo3ZgaQ1c&feature=plcp someword")
不确定为什么会发生这种情况,我还尝试添加
\S
或\但它似乎没有任何效果 看起来不像是在检查字符串的开头/结尾。使用^
和$
var x = new RegExp("^(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+$")
看起来不像是在检查字符串的开头/结尾。使用^
和$
var x = new RegExp("^(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+$")
这是因为你没有锚定你的表情
^(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+$
| |
here, and... here.
这是因为你没有锚定你的表情
^(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+$
| |
here, and... here.
regex.test(string)
返回在字符串中是否找到一个或多个匹配项的布尔值,因此它将(并且应该)为返回true
http://www.youtube.com/watch?v=FvYo3ZgaQ1c&feature=plcp someword“
如果要测试字符串是否为URL且仅为URL,请添加一些锚定:
^(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+$
regex.test(string)
返回在字符串中是否找到一个或多个匹配项的布尔值,因此它将(并且应该)为返回true
http://www.youtube.com/watch?v=FvYo3ZgaQ1c&feature=plcp someword“
如果要测试字符串是否为URL且仅为URL,请添加一些锚定:
^(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+$
这不也允许vimeo.be的域和tld吗(这可能存在,但不是我见过的)。哦,谢谢你告诉我,我想它还需要一些修复。这不允许vimeo.be的域和tld吗(这可能存在,但不是我见过的)。哦,谢谢你告诉我,我想它还需要修理