如何将匹配的单词放入数组中?

时间:2014-03-01 03:12:13

标签: javascript

这是对此I need a better way of counting words in a text area?

的跟进问题

我正在计算<textarea>正则表达式中的单词。这只计算单词,我需要做的不仅是单词的计数,还有单词的数组,我可以使用array.length来表达。我需要一个实际的单词列表,而不仅仅是它们的计数。

我的想法是将正则表达式检查器放在for循环中?

这是我的代码:

<body>
    <textarea rows="14" cols="50" id="text"></textarea>
    <br/>
    <br/>
    <br/>
    <br/>
    <button onclick="show()">Analyze</button>
    <div id="results"></div>
    <script>
        function show() {
            var words;
            /// GET WORDS
            var s = document.getElementById("text").value;
            var word = /[a-zA-Z\d'’-]+/g;
            var words = s.match(word).length;
            document.getElementById("results").innerHTML = words;
        }
    </script>
</body>

3 个答案:

答案 0 :(得分:0)

您所要做的就是更改此行:var words = s.match(word).length;改为var words = s.match(word);

现在你有单词作为单词数组...这个想法是s.match(word)本身就是一个数组......添加.length只返回这个数组的长度。

答案 1 :(得分:0)

完整示例:

<body>

<textarea rows="14" cols="50" id="text"></textarea>

<br/>
<br/>
<br/>
<br/>

<button onclick="show()">Analyze</button>

<div id="results"></div>
<script> 


  function show() {
    var words,
      s = document.getElementById("text").value,
      word = /[a-zA-Z\d'’-]+/g,
      // If no matches, returns null, fallback to empty array
      words = s.match(word)||[],
      wordCount = words.length; 
    document.getElementById("results").innerHTML = words; 
  }


</script>

</body>

答案 2 :(得分:0)

你的正则表达式不正确试试这个

 var words = "this is a word list";
 var wordm = /(\w+)/g;
 var beer = words.match(wordm); 
 console.log (beer); // prints the array
 console.log (beer.length); // prints 5 

'\ w +'匹配任何单词,'()'对它们进行分组,g重复它。然后将它们放在一个数组中。