Checking if Null
这是一个非常简单的问题,但是因为我用这种语言只做了一个星期,我还没有找到答案。下面两行之间发生错误,因为Regex是随机的空值,但是我如何检查它是否为空,这样它就不会抛出错误?
1 2
| var Regex = /\<span class="currency-robux">([\d,]+)\<\/span\>/
var PriceSelling = data.match(Regex)[1] |
- 我找空了,但找不到。我2分钟前就查过了。对不起,复制品。
- 用正则表达式解析HTML以获得额外的学分。
- @BenjamingRuenbaum:他不是在分析它,而是在匹配它的一部分——对于这个部分,Regex是可以的。
- 它在for循环中。在检查它是否为空之后,假设它为空,它将转到循环中的下一个项,对吗?
- @为什么不用regex解析HTML?为已经具有可以查询的数据结构的对象编写正则表达式似乎很愚蠢。在他的情况下,最容易做的事情就是无论如何要做document.querySelector(".currency-robux").textContent。(一个额外的createDocumentFragment行,然后查询它是否还不在dom中)。如果在单词class或多个类或多个属性后有空格,则不会发生心脏病。
- @BenjamingRuenbaum:取决于字符串是否来自DOM。它不像在你链接的问题中那样"解析",在那里它试图用regex表达HTML的语言语法——这里没有做,它期望有一个特定的范围。
- @你真的相信正则表达式是完成这项任务的最佳工具吗?它可能会在很多方面出错,把它扔到一个碎片中,然后查询它,这非常简单,而且不那么脆弱……
- 不,但根据具体情况,可能是最简单的。
您可以分两步完成:
1 2
| var result = data.match(Regex);
var PriceSelling = result != null ? result[1] : undefined; |
或者使用或运算符将空数组用作默认结果:
1
| var PriceSelling = (data.match(Regex) || [])[1]; |
这样地:
1 2 3 4 5 6 7
| 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,因为它是"非法的"。我该怎么解决?
- @用户3341815代替< 1,只需使用> 0。