当比赛什么都没找到时,如何得到假?

时间:2018-10-22 21:14:19

标签: javascript regex regex-group

当我运行此代码时:

var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = foundUrlString[1];

如果页面上没有匹配项,我会报错:

  

表达式'foundUrlString'[null]的结果不是对象

在没有匹配项而不是此错误的情况下,如何获取“ false”?

4 个答案:

答案 0 :(得分:1)

从现有功能开始,您可以在第二行添加“真实”检查:

Autoscroll to Source

这将使var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i ); var foundUrl = !!foundUrlString && foundUrlString[1]; 作为匹配的字符串或foundUrl

答案 1 :(得分:0)

选中null以打印falsetrue

        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)

以下是trycatch的示例,可能对您有帮助:

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