检查是否为空值

5

这是一个非常简单的问题,但由于我只学习了一周,所以答案还没有出现。在以下两行代码之间会发生错误,因为Regex随机为空,但是我该如何检查它是否为空,以便不会抛出错误?

var Regex = /\<span class="currency-robux">([\d,]+)\<\/span\>/
var PriceSelling = data.match(Regex)[1]

1
使用正则表达式解析HTML。(额外加分)使用正则表达式解析HTML - Benjamin Gruenbaum
1
@BenjaminGruenbaum:他并不是在解析它,而只是匹配其中的一部分——这时正则表达式就很好用了。 - Bergi
它在一个for循环中。在检查它是否为空之后,假设它是空的,它会直接进入循环中的下一项,对吗? - user3341815
1
@Bergi 这不是用正则表达式解析HTML吗?为已经有数据结构可以查询的东西编写正则表达式似乎有些愚蠢。在他的情况下,最简单的方法是使用 document.querySelector(".currency-robux").textContent。 (如果尚未在DOM中,则添加一个额外的 createDocumentFragment 行,然后查询该行)。如果单词 class 后面有空格或多个类或多个属性,也不会出现问题。 - Benjamin Gruenbaum
@BenjaminGruenbaum:这取决于字符串是否来自DOM。而且它不像你链接中的问题那样“解析”,在那里试图用正则表达式表示HTML的语言语法 - 这里没有这样做,它期望一个特定的span。 - Bergi
显示剩余3条评论
2个回答

1

Like this:

var Regex = /<span class="currency-robux">([\d,]+)<\/span>/;
var PriceSelling = data.match(Regex);
PriceSelling = PriceSelling ? PriceSelling[1] : '';

if (PriceSelling.length < 1) {
    alert('Nothing!');
}

谢谢您修复了那部分代码,但是它在一个for循环中,而且它不允许我使用continue语句跳过那个ID,因为它是“非法”的。我该如何解决这个问题? - user3341815
@user3341815 不要使用 < 1,而是使用 > 0 - Toothbrush

1
你可以分成两步来做:

你可以先进行第一步:

var result = data.match(Regex);
var PriceSelling = result != null ? result[1] : undefined;

或者使用 OR 运算符将空数组作为默认结果:

var PriceSelling = (data.match(Regex) || [])[1];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接