2013-08-27 42 views
9

私はtextareaフィールドの単語数をカウントするjQuery関数を持っています。さらに、[[[三角括弧]]で閉じられているすべての単語は除外されます。それはラテン文字にはうまくいきますが、キリル文字には問題があります。フレーズの両方の種類とキリル文字アルファベットの正規表現

$(field).val().replace(/\[\[\[[^\]]*\]\]\]/g, '').match(/\b/g); 

例: http://jsfiddle.net/A3cEG/2/

は私がcirillic式、ラテン語でない単語だけを含め、すべての単語を数える必要がある私は、エラーが正規表現と一部であると仮定します。どうやってするか?

+0

あなたは何をしようとしているのか分かりませんが、 '.trim()。split(/ \ s + /)。 – Bergi

+0

@Bergi OPは2つの単語として文字列 '' ... this。 'を数えたい場合はありません。 –

答えて

24

JavaScript(少なくとも最も広く使用されているバージョン)は、Unicodeを完全にサポートしていません。つまり、\wは、ラテン文字、10進数字、およびアンダースコア([a-zA-Z0-9_])のみに一致し、\bは、単語文字と非単語文字の境界に一致します。

.match(/[\wа-я]+/ig); // where а is the Cyrillic а. 

それとも好む場合:もちろん

.match(/[\w\u0430-\u044f]+/ig); 

この意志ラテン語やキリル文字を使用した入力文字列内のすべての単語を検索するに

、あなたはこのような何かをする必要があると思いますおそらく、あなたのコードをちょっと微調整する必要があることを意味します。ここでは、単語の境界ではなくすべての単語にマッチするからです。 [а-я]は、hereと記載されている「基本キリル文字」の文字と一致します。この範囲外の文字を一致させるには、必要に応じて文字セットを変更して、それらの文字を含めることができます。ロシア語のЁ/ёにも一致するには、[а-яё]を使用します。また

.replace(/\[{3}[^]]*]{3}/g, '') 

、あなたはXRegExpプロジェクト・ベースに新しい機能を追加するためのオープンソースプロジェクトである時に見たいと思うかもしれません:

はまた、あなたのトリプルブラケットパターンはに簡素化することができることに注意してくださいJavaScriptの正規表現エンジンとそのUnicodeアドオン。

+1

また、/ [\ wa-яА-Я] +/igは "а-я"として大文字と小文字が区別されます。 – Zon

+1

@ Zon最後の 'i'は大文字と小文字を区別しません。私は、/ [а-я]/iにマッチするА-Яを扱うのに十分スマートではないブラウザがあることはほとんど間違いありません。 –

+0

Zon-Browserに似ています! :) – Zon

関連する問題