Javascript中的正则表达式返回Null

Javascript中的正则表达式返回Null,javascript,regex,Javascript,Regex,我正在尝试使用javascript片段验证Youtube URL。 以下是我正在使用的代码: var url = "https://www.youtube.com/watch?v=xldcf8_XVfQ"; var regEx = new RegExp("(http\:\/\/|https\:\/\/)?((www\.)youtube\.com|youtu\.?be)(\/watch\?v=)(\w{11})"); var checkRegEx = tabUrl.match(regEx); 即

我正在尝试使用javascript片段验证Youtube URL。 以下是我正在使用的代码:

var url = "https://www.youtube.com/watch?v=xldcf8_XVfQ";
var regEx = new RegExp("(http\:\/\/|https\:\/\/)?((www\.)youtube\.com|youtu\.?be)(\/watch\?v=)(\w{11})");
var checkRegEx = tabUrl.match(regEx);
即使对于应该匹配的有效URL,这也会始终返回null。但是,我的正则表达式是有效的,我在以下位置进行了检查:

正在尝试使用以下命令输出:

    document.getElementById("yDivElem").innerHTML = checkRegEx;

尝试在不使用regex对象的情况下定义regex

var re = /(http\:\/\/|https\:\/\/)?((www\.)youtube\.com|youtu\.?be)(\/watch\?v=)(\w{11})/; 
var url = 'https://www.youtube.com/watch?v=xldcf8_XVfQ';

var match = re.exec(url);
var regEx = new RegExp("(http\\:\\/\\/|https\\:\\/\\/)?((www\\.)youtube\\.com|youtu\\.?be)(\\/watch\\?v=)(\\w{11})");
编辑:正如@Barmer所说的,在使用RegEx对象时,需要对字符串进行双重转义

var re = /(http\:\/\/|https\:\/\/)?((www\.)youtube\.com|youtu\.?be)(\/watch\?v=)(\w{11})/; 
var url = 'https://www.youtube.com/watch?v=xldcf8_XVfQ';

var match = re.exec(url);
var regEx = new RegExp("(http\\:\\/\\/|https\\:\\/\\/)?((www\\.)youtube\\.com|youtu\\.?be)(\\/watch\\?v=)(\\w{11})");

这些是基本形式

 # raw: (https?://)?((www\.)youtube\.com|youtu\.?be)(/watch\?v=)(\w{11})
 # quoted: "(https?://)?((www\\.)youtube\\.com|youtu\\.?be)(/watch\\?v=)(\\w{11})"
 # delimited:  /(https?:\/\/)?((www\.)youtube\.com|youtu\.?be)(\/watch\?v=)(\w{11})/

 # raw formatted:

 ( https?:// )?                # (1)
 (                             # (2 start)
      ( www\. )                     # (3)
      youtube\.com
   |  youtu\.?be
 )                             # (2 end)
 ( /watch\?v= )                # (4)
 ( \w{11} )                    # (5)

您需要转义字符串中的所有反斜杠。为什么不直接使用regexp文本而不是
newregexp