テキストエリア内の単語数を正確にカウントするJavaScriptコマンドの正規表現をまとめようとしています。
私が見つけた1つの解決策は次のとおりです。
document.querySelector("#wordcount").innerHTML = document.querySelector("#editor").value.split(/\b\w+\b/).length -1;
ただし、これは非ラテン文字(例:キリル文字、ハングル文字など)はカウントしません。それらを完全にスキップします。
私がまとめたもう1つ:
document.querySelector("#wordcount").innerHTML = document.querySelector("#editor").value.split(/\s+/g).length -1;
ただし、ドキュメントがスペース文字で終わっていない限り、これは正確にカウントされません。カウントされる値にスペース文字が追加されると、空のドキュメントでも1ワードがカウントされます。さらに、ドキュメントがスペース文字で始まる場合、無関係な単語がカウントされます。
入力方法に関係なく、単語を正確にカウントするこのコマンドに入力できる正規表現はありますか?
これはあなたが求めていることをするはずです:
value.match(/\S+/g).length;
文字列を分割するのではなく、空白以外の文字の任意のシーケンスを照合します。
必要に応じて各単語を簡単に抽出できるという追加のボーナスがあります;)
空白ではなく、単語の境界があるものはすべて数えてみてください。
value.split(/\b\S+\b/g).length
Unicode範囲を使用することもできますが、次の範囲が完全かどうかはわかりません。
value.split(/[\u0080-\uFFFF\w]+/g).length
私にとって、これは最良の結果をもたらしました:
value.split(/\b\W+\b/).length
と
var words = value.split(/\b\W+\b/)
あなたはすべての言葉を得る。
説明:
正規表現を学ぶことをお勧めします。彼らはとても強力なので、持っていることは素晴らしいスキルです。 ;-)
正しい正規表現は/s+/
単語以外を破棄するには:
'Lorem ipsum dolor , sit amet'.split(/\S+/g).length
7
'Lorem ipsum dolor , sit amet'.split(/\s+/g).length
6
試してみてください
value.match(/\w+/g).length;
これは、Wordに含めることができる文字列と一致します。一方、次のようなものです。
value.match(/\S+/g).length;
ユーザーがコンマまたはスペースが続かない他の句読点を追加した場合、またはその両側にスペースを含むコンマを追加した場合、誤ったカウントになります。
このようにメソッドを拡張/変更できます
document.querySelector("#wordcount").innerHTML = document.querySelector("#editor").value.split(/\b\(.*?)\b/).length -1;
メールアドレスなども照合したい場合
そして
document.querySelector("#wordcount").innerHTML = document.querySelector("#editor").value.trim().split(/\s+/g).length -1;
また、Unicodeの\s
として\w
を使用してみてください
ソース:http://www.regular-expressions.info/charclass.html
私のsimpleFuncJSと呼ばれるJavaScriptライブラリには、「count()」と呼ばれる関数があります。
たとえば、単語でいっぱいの文字列がある場合、次のように関数ブラケットの間に配置するだけです。
count("How many words are in this string?");
次に、関数を呼び出します。この関数は、単語数を返します。また、この関数は空白を無視するように設計されているため、正確な結果が得られます。
この関数の詳細については、 http://docs.funcjs.webege.com/count().html のドキュメントをお読みください。また、FuncJSのダウンロードリンクもこのページにあります。
これがこれをやりたい人に役立つことを願っています! :)