Javascript中的正则表达式返回Null
我正在尝试使用javascript片段验证Youtube URL。 以下是我正在使用的代码: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); 即
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
?