2012-11-03 13 views
11

I mają poniższe wyrażenie pozwalający jedynie liter:JavaScript regex równoważnik/[a-za-Z] +/z użyciem p {l}

 /[a-zA-Z]+/ 

    a = "abcDF" 
    if (a.match(/[a-zA-Z]+/) == a){ 
     //Match 
    }else{ 
     //No Match 
    } 

Jak można to zrobić przy użyciu p {L} (uniwersalny - jak każdy język niemiecki, angielski itp ..)

Co próbowałem:

a.match(/[p{l}]+/) 
    a.match(/[\p{l}]+/) 
    a.match(/p{l}/) 
    a.match(/\p{l}/) 

ale wszyscy wrócili null dla litery A = "aB"

+0

zaktualizowane pytanie – user1767962

Odpowiedz

12

Zaczynając od ECMAScript 2018, JavaScript ostatecznie obsługuje domyślnie Unicode property escapes.

W przypadku starszych wersji należy samodzielnie zdefiniować wszystkie odpowiednie zakresy kodu Unicode. Można też użyć Steven Levithan na XRegExp package with Unicode add-ons i wykorzystywać swoje Unicode skróty własności:

var regex = new XRegExp("^\\p{L}*$") 
var a = "abcäöüéèê" 
if (regex.test(a)) { 
    // Match 
} else { 
    // No Match 
} 
+0

Nie mam problemu z wykorzystaniem pakietu, ale po prostu powiedzieć, jest to obowiązkowe w użyciu pakiet do sprawdzania inny languageslike niemiecki, angielski itp .. – user1767962

+0

ktoś mi powiedział, że \ w mecze dla dowolnego języka, czy to prawda? – user1767962

+0

'\ w' dopasowuje tylko litery ASCII/cyfry/podkreślenie w języku JavaScript. Nie ma łatwego sposobu wokół XRegExp, jeśli chcesz obsługiwać Unicode. –