2012-11-03 138 views
11

我有以下的正則表達式,其允許僅字母:的Javascript正則表達式等效{L}

 /[a-zA-Z]+/ 

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

我怎樣才能做到這使用對{L}(通用 - 像德語,英語等任何語言。)

我試了一下:

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

但所有的字母返回null = 「AB」

+0

更新問題 – user1767962

回答

12

從ECMAScript 2018開始,JavaScript本地支持Unicode property escapes

對於舊版本,您需要自己定義所有相關的Unicode範圍。或者你可以使用史蒂芬Levithan的XRegExp package with Unicode add-ons,並利用它的Unicode屬性快捷鍵:

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

我不使用包有問題,但只是告訴,是強制要求使用包檢查不同languageslike德語,英語等。 – user1767962

+0

有人告訴我說\ w匹配任何語言,是真的嗎? – user1767962

+0

'\ w'只能在JavaScript中匹配ASCII字母/數字/下劃線。如果你想支持Unicode,那麼XRegExp沒有簡單的方法。 –