2012-11-03 9 views
11

Ho la seguente espressione regolare che consente solo alfabeti:Javascript regex equivalente di/[a-zA-Z] +/usando p {L}

 /[a-zA-Z]+/ 

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

Come posso fare questo usando p {L} (universale - qualsiasi lingua come il tedesco, inglese, ecc ..)

Quello che ho cercato:

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

ma tutti restituiti nulla per la lettera a = "aB"

+0

aggiornato domanda – user1767962

risposta

12

A partire da ECMAScript 2018, JavaScript supporta infine Unicode property escapes in modo nativo.

Per le versioni precedenti, è necessario definire autonomamente tutti gli intervalli Unicode pertinenti. Oppure è possibile utilizzare Steven Levithan di XRegExp package with Unicode add-ons e utilizzare le sue scorciatoie proprietà Unicode:

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

non ho problema utilizzando il pacchetto, ma solo dire, è obbligatorio l'uso di pacchetto per il controllo diverso languageslike tedesco, inglese ecc .. – user1767962

+0

qualcuno mi ha detto che \ w corrisponde a qualsiasi lingua, è vero? – user1767962

+0

'\ w' corrisponde solo a lettere/cifre ASCII/trattino basso in JavaScript. Non esiste un modo semplice per aggirare XRegExp se si desidera supportare Unicode. –

5

Se siete disposti ad utilizzare Babel per costruire il tuo javascript poi c'è una babele-plugin ho liberato che trasformerà le espressioni regolari come /^\p{L}+$/ o /\p{^White_Space}/ in un'espressione regolare che i browser capiranno.

Questa è la pagina del progetto: https://github.com/danielberndt/babel-plugin-utf-8-regex