Javascript 使用正则表达式计算字符串中的引号数

Javascript 使用正则表达式计算字符串中的引号数,javascript,regex,Javascript,Regex,我似乎无法让它工作,它一直返回空值。我需要一种非常简单的方法来计算字符串中引号的数量 var wtf = '"""' var count = wtf.match(/"/g); alert(count); 这也有同样的问题 var count = tableitems[i].match(/\"/g); alert(count); 在第一个示例中,count是匹配项的数组。要想知道有多少人,你要做什么 alert(count ? count.length : 0) // count is nul

我似乎无法让它工作,它一直返回空值。我需要一种非常简单的方法来计算字符串中引号的数量

var wtf = '"""'
var count = wtf.match(/"/g);
alert(count);
这也有同样的问题

var count = tableitems[i].match(/\"/g);
alert(count);

在第一个示例中,
count
是匹配项的数组。要想知道有多少人,你要做什么

alert(count ? count.length : 0) // count is null if there are no matches
如果您正在考虑切换(:p),coffeescript有一个很好的方法来处理这种情况:

wtf = '"""'
count = wtf.match(/"/g)?.length;

如果没有匹配项,则计数将是未定义的,否则它将是匹配项的数量。

match
不返回计数,而是返回匹配项本身。您需要匹配的长度:

var wtf = '"""'
var matches = wtf.match(/"/g);
var count = matches ? matches.length : 0;

最后一行的意思是:“如果有匹配项,则对其进行计数,如果不返回零”

您可以这样做:

const countDoubleQuotes=wtf=>wtf.split(“”).length-1;
console.log(countDoubleQuotes(“);//预期1
console.log(countDoubleQuotes('Hello world');//预期2
console.log(countDoubleQuotes(“”“”);//应为3

console.log(countDoubleQuotes(“uu”);//预期为1
您的第一个代码示例不会像您建议的那样返回
null
。您的代码可以正常工作。你的问题是什么?Split比使用Regex(至少在chrome中)快得多。因此,如果您的解决方案可行,请使用split()。我将使用
警报(count?count.length:0)
,因为如果没有匹配项,它将返回null。@JosephSilber谢谢!好的建议这实际上是一行代码吗变量计数=匹配?长度:0---当然,这是一个三元运算符,请参见editcount=matches&&matches.length | 0;同样有效,并且稍快一些,count=(匹配| |“”).length@丹达维是的,但在我看来,可读性也稍差一些。最后,这只是一个品味问题,因为在大多数情况下,性能差异是无法测量的。字符串拆分比使用regexp快得多,这是一个很好的解决方案。如果“在字符串的末尾。在这种情况下,n等于双引号的数量-1您确定吗?我是说真的确定吗?你测试过了吗?为了说服你自己,我把它写成了一个可以运行的片段