Join the Stack Overflow Community
Stack Overflow is a community of 6.6 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

I am trying to search the text of a body of a webpage against a list of predefined words in an array. Then record how many instances of each word appeared.

<script>
var str = document.body.innerText;
var array = [];
array[0] = "Statement";
array[1] = "Documents"; 
var regexp = new RegExp( '\\b' + array.join('\\b|\\b') + '\\b').test(str);
document.write(regexp)
</script>

That one is only returning true or false. Or is there a way to make this one work?

var str = document.body.innerText;
var n = str.match(use array here)
document.write(n)
share|improve this question
    
Try doing var n = str.match(use array here).length; – Safirah 8 hours ago
2  
Also check out this question: stackoverflow.com/questions/1072765/… – Safirah 8 hours ago
    
Don't use non-standard innerText. Use textContent. – Oriol 8 hours ago
1  
since when is innerText non-standard? innerText – NonPolynomial 8 hours ago
    
@NonPolynomial innerText used to be non-standard but things have changed now. Hate that MDN redirects you to their cheesy localized page rather than the English version. – GOTO 0 7 hours ago

Try this

n = str.match(new RegExp('\\b(' + arr.join('|') + ')\\b', 'ig')) || []).length;
  1. make a dynamic Regex with i and g flag

    new RegExp('\\b(' + arr.join('|') + ')\\b', 'ig')
    
  2. define an empty array as fallback

    str.match(regex) || []
    
  3. return the length of the results array or the fallback array

    str.match(new RegExp('\\b(' + arr.join('|') + ')\\b', 'ig')) || []).length;
    
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.