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