【问题标题】:Checking if Null [duplicate]检查是否为 Null [重复]
【发布时间】:2014-03-24 12:52:34
【问题描述】:

这是一个非常简单的问题,但是因为我只做了一个星期的语言,所以我还没有找到答案。以下两行之间出现错误,因为Regex随机为null,但我如何检查它是否为null,所以它不会抛出错误?

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

【问题讨论】:

  • 我搜索了 null,但找不到。 2分钟前我确实搜索过。抱歉重复了。
  • @BenjaminGruenbaum:他没有解析它,而只是匹配它的一部分 - 正则表达式很好。
  • 它在一个 for 循环中。在检查它是否为空后,假设它是,它只会转到循环中的下一项,对吧?
  • @Bergi 怎么不使用正则表达式解析 HTML?为您已经拥有可以查询的数据结构的事物编写正则表达式似乎很愚蠢。在他的情况下,最简单的事情就是做document.querySelector(".currency-robux").textContent。 (一个额外的createDocumentFragment 行,然后查询它是否不在DOM 中)。如果class 或多个类或多个属性后面有空格,则不会发生心脏病。

标签: javascript regex


【解决方案1】:

像这样:

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 而不是&lt; 1,只需使用&gt; 0。
【解决方案2】:

您可以分两步完成:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-04-21
    • 2013-08-04
    • 2016-12-28
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 2016-02-29
    • 2014-07-16
    相关资源
    最近更新 更多