2011-09-10 19 views
8

Ben dize yalnızca boşluk, harf ve ñ içerdiğinden emin olmak için bir JavaScript düzenli ifade arıyorum - vaka duyarsız. /^[A-Za-z _]*[A-Za-z][A-Za-z _]*$/ ama ñ kabul başarısız:JavaScript regex yalnızca harf, boşluk kabul etmek ve ñ

zaten denedim. sadece o caracter istiyorsanız

+0

Denedim:/^ [A-Za-z _] * [A-Za-z] [A-Za-z _] * $/- Ama bu do not ñ Değerler kabul edin. –

+0

Tamam, buradaki sorunun gerçekten normal ifadelerdeki ASCII olmayan karakterleri nasıl işleyeceğine benzemesi gibi geliyor. –

+1

Evet, çünkü bu durumda ASCII değerine ihtiyacım var ñ –

cevap

11
/^[ñA-Za-z _]*[ñA-Za-z][ñA-Za-z _]*$/ 

ve

/^[\u00F1A-Za-z _]*[\u00F1A-Za-z][\u00F1A-Za-z _]*$/ 

çalışmalıdır.

JavaScript regex \uFFFF aracılığıyla \u0000 destekler.

+0

Yanıtınız yardımcı oldu ben çok Teşekkürler –

+3

Bu, temelde ilk olarak bir NFC dönüşümü yoluyla verilerini çalıştırdığını söylemediğinden kusurlu. Yapmazsa, bu modeller işe yaramaz. O gerçekten [aábcdeéfghijklmnñoópqrstuúüvwxyzAÁBCDEÉFGHIJKLMNÑOÓPQRSTUÚÜVWXYZ] 'İspanyol alfabesi için, ama bu sadece size NFC eğer veri çalışacaktır' istiyor eminim !! – tchrist

4

, [A-Za-zÑñ ] gibi Regex takın. Aksi halde, Javascript için http://xregexp.com/ gibi bir Unicode-bilen Regex kütüphanesi kullanın. Ne yazık ki JS Regex'leri Unicode uyumlu karakter sınıflarını desteklemiyor (C# regexes gibi)

+0

C#, aslında "\ pL" yerine "\ p {L}" yazmanızı sağlıyor mu ????? Bu gerçekten aptalca, çünkü en yaygın 7 vaka için belirtecin uzunluğunu üç katına çıkarır. Bu Huffman hatası. Birisi çok akıllı değildi. "\ PL" yi, \ w \ 'den yazmak için biraz daha zor yapmalısınız. Aksi halde insanlar onu kullanmaz. '\ p {L}' tasarım hatasıdır. – tchrist

+0

@tchrist AMA sonunda "ifade" nin iki katından daha az. '\ p {L}' 5 karakterdir ve \ pL 3'tür. Evet, \ pL daha iyi olurdu, ama BMP olmayan karakterleri desteklemenin ve \ X'in daha önemli olacağını düşünürüm :-) – xanatos

1

Bir karakter sınıfı kullanmanız gerekiyor.

/[A-Za-z ñ]+/ 
İlgili konular