我试图检查var匹配是否为空,但我没有运气。任何帮助将不胜感激。
var url = document.getElementById("defineNewURL").value;
var urlReg;
var subject = url.toString();
var regex = /^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$/
match = regex.exec(subject);
if(typeof match == 'undefined'){
urlReg = url;
}else{
urlReg = match[6];
}
答案 0 :(得分:1)
//.exec
会返回null
,
和匹配时的对象。
由于所有对象都是 truthy ,而null
是 falsy ,
你可以写下这样的条件:
if (match) {
urlReg = match[6];
} else {
urlReg = url;
}
答案 1 :(得分:1)
regex.exec
不返回undefined但为null。在您的代码中:
typeof match
返回object
请注意:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
尝试使用这样的代码:
var url = document.getElementById("defineNewURL").value;
var urlReg;
var subject = url.toString();
var regex = /^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$/
match = regex.exec(subject);
if(match == null){
urlReg = url;
}else{
urlReg = match[6];
}