当我运行此代码时:
var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = foundUrlString[1];
如果页面上没有匹配项,我会报错:
表达式'foundUrlString'[null]的结果不是对象
在没有匹配项而不是此错误的情况下,如何获取“ false”?
答案 0 :(得分:1)
从现有功能开始,您可以在第二行添加“真实”检查:
Autoscroll to Source
这将使var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = !!foundUrlString && foundUrlString[1];
作为匹配的字符串或foundUrl
。
答案 1 :(得分:0)
选中null
以打印false
或true
。
var savedPage = '';
var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = foundUrlString == null ? false : true;
console.log(foundUrl );
答案 2 :(得分:0)
您需要了解String.prototype.match
的目的。函数match
将在您的正则表达式中返回一个数组,其中包含匹配组的整个集合。因此,如果要验证字符串,最好的方法是使用函数RegExp.prototype.test
。
使用regexp中的函数RegExp.prototype.test
:
let savedPage = "EleFromStack";
console.log(/og:url.*="(http.*\.com)/i.test(savedPage));
答案 3 :(得分:0)
以下是try
和catch
的示例,可能对您有帮助:
function regex(savedPage) {
try {
var foundUrlString = savedPage.match(/og:url.*="(http.*\.com)/i);
return foundUrlString[1];
} catch (error) {
return false;
}
}
var savedPage1 = '<link property="og:url" content="http://test.com/test">';
console.log('savedPage1',regex(savedPage1));
var savedPage2 = '<link content="http://test.com/test">';
console.log('savedPage2',regex(savedPage2));