2013-08-27 39 views
9

Textarea alanında kelime sayımı için jQuery fonksiyonum var. Ayrıca [[[tripple braketi]]] 'de kapalı olan tüm kelimeleri hariç tutar. Latince karakteriyle harika çalışır, ancak kiril cümleleriyle bir problemi vardır. ifadelerin ikisi türKiril alfabesiyle düzenli ifade

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

Örnek: http://jsfiddle.net/A3cEG/2/

Ben cirillic ifadeler, latince değil sadece kelimeleri dahil tüm kelime saymak gerek hata düzenli ifade ile kısmen olduğunu varsayalım. Bu nasıl yapılır?

+0

Yapmaya çalıştığınızdan emin değilsiniz, ama .trim() .bunu ayırın (/ \ s + /). – Bergi

+0

@Bergi, OP bir dizgeyi "" gibi.... Bu "2 kelime olarak saymak isterse değil. –

cevap

24

JavaScript (en çok kullanılan sürümler) Unicode ürününü tam olarak desteklememektedir. Yani, \w yalnızca Latin harfleri, ondalık basamakları ve alt çizgilarıyla eşleşir ([a-zA-Z0-9_]) ve \b, bir sözcük karakteri ile sözcük olmayan bir karakter arasındaki sınırla eşleşir.

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

Ya da isterseniz:

Latince ya Kiril kullanarak bir giriş dizesi tüm kelimeleri bulmak için, böyle bir şey yapmak zorunda kalacak Tabii bu irade Of

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

Muhtemelen kodunuzu biraz düzeltmeniz gerektiği anlamına gelir, çünkü burada kelime sınırları yerine tüm sözcükleri eşleştirecektir. [а-я]'un 'temel Kiril alfabesinde' açıklandığı gibi here numaralı tüm harflerle eşleştiğini unutmayın. Bu aralığın dışındaki harfleri eşleştirmek için, karakter kümesini, söz konusu harfleri içerecek şekilde gerektiği gibi değiştirebilirsiniz. ayrıca Rusça Ё/ё ile eşleşecek şekilde [а-яё] kullanın. Alternatif

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

, sen XRegExp proje-tabanına yeni özellikler eklemek için bir açık kaynak projesi bakmak isteyebilirsiniz:

Ayrıca üçlü braket desen basitleştiirlebilir dikkat JavaScript düzenli ifade motoru ve onun Unicode addon.

+1

Ayrıca "а-я" ifadesinin büyük/küçük harf duyarlı olması durumunda da/[\ wа-яА-Я] +/ig olmasını öneririm. – Zon

+1

@Zon 'i' sonunda, büyük/küçük harfe duyarsız hale getirir. Her ne kadar kesinlikle orada kesinlikle bazı tarayıcılar olduğunu kabul etmese de, eşleşen--in handle '' '' '' 'handle handle handle handle handle handle handle handle handle handle handle handle handle handle handle handle enough enough enough enough enough' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' –

+0

Zon tarayıcısı gibi! :) – Zon