match 什么都找不到时如何得到 false?
How to get false when match finds nothing?
当我运行这个代码时:
var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = foundUrlString[1];
如果页面上没有匹配项,我会收到错误消息:
Result of expression 'foundUrlString' [null] is not an object
当没有匹配项而不是这个错误时,如何得到 "false"?
选中 null
以打印 false
或 true
。
var savedPage = '';
var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = foundUrlString == null ? false : true;
console.log(foundUrl );
你需要明白String.prototype.match
的目的是什么。函数 match
将 return 一个数组,其中包含正则表达式中的整组匹配组。所以,如果你想验证一个字符串,最好的方法是使用函数 RegExp.prototype.test
.
使用正则表达式中的函数RegExp.prototype.test
:
let savedPage = "EleFromStack";
console.log(/og:url.*="(http.*\.com)/i.test(savedPage));
根据现有内容,您可以在第二行添加 "truthy" 检查:
var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = <b>!!foundUrlString</b> && foundUrlString[1];
这将使 foundUrl
成为匹配的字符串或 false
。
这里有一个 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));
当我运行这个代码时:
var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = foundUrlString[1];
如果页面上没有匹配项,我会收到错误消息:
Result of expression 'foundUrlString' [null] is not an object
当没有匹配项而不是这个错误时,如何得到 "false"?
选中 null
以打印 false
或 true
。
var savedPage = '';
var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = foundUrlString == null ? false : true;
console.log(foundUrl );
你需要明白String.prototype.match
的目的是什么。函数 match
将 return 一个数组,其中包含正则表达式中的整组匹配组。所以,如果你想验证一个字符串,最好的方法是使用函数 RegExp.prototype.test
.
使用正则表达式中的函数RegExp.prototype.test
:
let savedPage = "EleFromStack";
console.log(/og:url.*="(http.*\.com)/i.test(savedPage));
根据现有内容,您可以在第二行添加 "truthy" 检查:
var foundUrlString = savedPage.match( /og:url.*="(http.*\.com)/i );
var foundUrl = <b>!!foundUrlString</b> && foundUrlString[1];
这将使 foundUrl
成为匹配的字符串或 false
。
这里有一个 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));