我正在尝试使用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;
答案 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)