这两者是相同的,还是一个比另一个更好/更安全



恐怕对用户输入字符串match的优化会导致错误,因为使用设置了g标志且与字符串不匹配的正则表达式match将返回null,这是不可优化的。

所以我只剩下以下两个选项,据我所知,它们是相同的。但我只是想确保我正确理解它。

    var tldMatcher = /[^.]+.?$/g
      , tld = str.match(tldMatcher) ? str.match(tldMatcher)[0] : null;

。和。。。

    var tldMatcher = /[^.]+.?$/g
      , tld = str.match(tldMatcher) && str.match(tldMatcher)[0];

有什么想法吗?

就我个人而言,当我将.matchg一起使用时,我总是使用|| []。那是:

var matches = str.match(/regex/g) || [];

这可确保matches始终是字符串数组(但可能为空)。在您的情况下,可以这样做:

var tldMatcher = /[^.]+.?$/g
  , tld = (str.match(tldMatcher) || [])[0];

相关内容

  • 没有找到相关文章