恐怕对用户输入字符串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];
有什么想法吗?
就我个人而言,当我将.match
与g
一起使用时,我总是使用|| []
。那是:
var matches = str.match(/regex/g) || [];
这可确保matches
始终是字符串数组(但可能为空)。在您的情况下,可以这样做:
var tldMatcher = /[^.]+.?$/g
, tld = (str.match(tldMatcher) || [])[0];