这是对此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>
答案 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重复它。然后将它们放在一个数组中。