Javascript-эквивалент регулярного выражения /[a-zA-Z] +/с использованием p {L}

У меня есть следующее регулярное выражение, которое допускает только алфавиты:

     /[a-zA-Z]+/

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

Как это сделать, используя p {L} (универсальный - любой язык, такой как немецкий, английский и т.д.)

Что я пробовал:

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

но все возвратили null для буквы a = "aB"

Ответ 1

JavaScript не поддерживает ярлыки Unicode изначально.

Таким образом, вам нужно либо самостоятельно определить все соответствующие диапазоны Юникода. Или вы можете использовать пакет Стивена Левитана XRegExp с надстройками Unicode и использовать его ярлыки свойств Unicode:

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

Ответ 2

Если вы хотите использовать Babel, чтобы создать свой javascript, тогда есть плагин babel, который я выпустил, который преобразует регулярные выражения, такие как /^\p{L}+$/ или /\p{^White_Space}/ в регулярное выражение, которое браузеры поймут.

Это страница проекта: https://github.com/danielberndt/babel-plugin-utf-8-regex