1

javascriptでyoutubeとvimeoのURLを一致させようとしています。私は正規表現を使って遊んでいて、これを思いつきました:

(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+

正規表現でうまく機能します。空白は一致に含まれないため、これにのみ一致します。

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")

なぜこれが起こっているのかわからないので、\Sorを追加しようとしまし!\sたが、効果がないようです。

4

3 に答える 3

2

文字列の開始/終了をチェックしているようには見えません。^と_$

var x = new RegExp("^(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+$")
于 2012-10-15T14:46:52.123 に答える
2

regex.test(string)trueは、文字列内に 1 つ以上の一致が見つかったかどうかのブール値を返します"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\?&=]+$
于 2012-10-15T14:49:25.447 に答える
1

それは、あなたの表現力が定着していないからです。

^(http|https)://(youtu|www.youtube|vimeo|youtube)\.(be|com)/[A-Za-z0-9\?&=]+$
|                                                                           |
here, and...                                                                here.
于 2012-10-15T14:48:18.350 に答える