0

この JavaScript の正規表現

var foo = RegExp("^https?:\/\/(\w+\.)*youtube\.([a-zA-Z0-9])+");

次のような文字列に一致します: [以下のステートメントは true を返します]

foo.test("http://www.youtube.com");
foo.test("https://www.youtube.com");
foo.test("http://youtube.com");

ただし、式が次の場合、同じテストは失敗します。

var foo_fail = RegExp("^https?:\/\/(\w+\.)*youtube\.\w+");

この RegExp は上記のテストに合格しているはずですが、次のように表示されます。chrome/firebug コンソールでは false を返します。これは true を返すはずでした。この表現で何が間違っていますか?

同様の式を perl で実行すると、期待どおりの一致が返されます。

4

1 に答える 1

5

w:の前に円記号がありません。

\.\w+

さらに、静的正規表現の場合は、構文を使用せ[new] RegExp()、正規表現リテラルを使用してください。

var foo = /^https?:\/\/(\w+\.)*youtube\.\w+/;
于 2012-07-27T23:27:33.737 に答える