我正在研究一个jQuery函数,它计算textarea字段中的单词数。我想确保用双引号括起来的单词(例如“this”或“that”)分别计为一个单词。现在这就是我所拥有的:
var maxWords = 100;
$('#CommentsField').keypress(function() {
var $this, wordcount;
$this = $(this);
wordcount = $this.val().split(/\s\b[\s,\.\'-:;]*/).length;
if (wordcount > maxWords) {
alert("You've reached the maximum allowed words. Please keep the nominee description to 100 words.");
$('#WordCount').text("Word Count: "+maxWords);
return false;
} else {
return $('#WordCount').text("Word Count: "+wordcount);
}
});
这几乎可行,但它不包括用双引号括起来的单词,这会混淆单词计数。我的正则表达式中缺少什么可以解决这个问题?
答案 0 :(得分:1)
您可以使用
计算字符串中所有非空白字符序列的出现次数$this.val().match(/\S+/g).length
请注意,如果字符边界位于非字字符之间,则字符边界将无法匹配(请参阅demo)。
另一种方法:如果您的输入不是Unicode,则只能使用/\b/g
,并将匹配数除以2.