我担心对match
用户输入字符串进行细化会导致错误,因为match
使用设置了g
标志的正则表达式并且没有匹配字符串将返回null
,这是无法确定的。
所以我留下了以下两个选项,据我所知,它们是完全相同的。但我只是想确保我理解它。
var tldMatcher = /[^.]+\.?$/g
, tld = str.match(tldMatcher) ? str.match(tldMatcher)[0] : null;
...和...
var tldMatcher = /[^.]+\.?$/g
, tld = str.match(tldMatcher) && str.match(tldMatcher)[0];
有什么想法吗?
答案 0 :(得分:1)
当我将|| []
与.match
一起使用时,我个人总是使用g
。那就是:
var matches = str.match(/regex/g) || [];
这确保matches
始终是一个字符串数组(但可能是空的)。在你的情况下,它可以这样做:
var tldMatcher = /[^.]+\.?$/g
, tld = (str.match(tldMatcher) || [])[0];