2014-10-25 01:09:50 +04:00
|
|
|
// jscs: disable
|
2015-05-02 22:56:33 +03:00
|
|
|
/* global XRegExp */
|
|
|
|
|
2014-10-25 01:09:50 +04:00
|
|
|
function wordCount(s) {
|
2015-05-02 22:56:33 +03:00
|
|
|
|
|
|
|
var nonANumLetters = new XRegExp("[^\\s\\d\\p{L}]", "g"); // all non-alphanumeric letters regexp
|
|
|
|
|
2015-02-01 09:22:20 +03:00
|
|
|
s = s.replace(/<(.|\n)*?>/g, ' '); // strip tags
|
2015-05-02 22:56:33 +03:00
|
|
|
s = s.replace(nonANumLetters, ''); // ignore non-alphanumeric letters
|
2015-02-01 09:22:20 +03:00
|
|
|
s = s.replace(/(^\s*)|(\s*$)/gi, ''); // exclude starting and ending white-space
|
|
|
|
s = s.replace(/\n /gi, ' '); // convert newlines to spaces
|
|
|
|
s = s.replace(/\n+/gi, ' ');
|
|
|
|
s = s.replace(/[ ]{2,}/gi, ' '); // convert 2 or more spaces to 1
|
2014-10-25 01:09:50 +04:00
|
|
|
|
2015-02-01 09:22:20 +03:00
|
|
|
return s.split(' ').length;
|
2014-10-25 01:09:50 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
export default wordCount;
|