RegEx在Javascript中返回Null

时间:2015-03-10 21:46:14

标签: javascript regex

我正在尝试使用javascript片段验证Youtube网址。 这是我正在使用的代码:

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

即使对于应该匹配的有效网址,这总是返回null。但是我的正则表达式是有效的,我检查了: http://regexr.com/3aj3r

尝试输出:

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

2 个答案:

答案 0 :(得分:1)

尝试在没有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);

编辑:正如@Barmer所说,在使用RegEx对象时,您需要双重转义字符串。

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

答案 1 :(得分:1)

这些是基本形式。

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