Регулярные выражения в реализациях ECMAScript ИМХО лучше всего объяснить в Mozilla Developer Network (ранее Mozilla Developer Center) в статье RegExp
Справочник по языку JavaScript стр.
Однако, как уже отмечалось, в предыдущих ответах не учитываются неанглийские буквы, такие как умлауты и буквы с акцентом. Чтобы не удалять эти буквы из строки, вы должны исключить их из диапазона символов следующим образом:
var s = "Victor 1 jagt 2 zwölf 3 Boxkämpfer 4 quer 5 über 6 den 7 Sylter 8 Deich";
s = s.replace(/[^a-zäöüß]+/gi, "");
Этот подход быстро становится утомительным и его трудно поддерживать, особенно если необходимо рассмотреть несколько естественных языков (и даже в надлежащем английском языке есть иностранные слова, такие как " déjà vu " и " жених ").
Таким образом, среди других функций PCRE JSX: regexp.js позволяет использовать регулярные выражения, которые могут использовать классы свойств Unicode, через Unicode Character Database (UCD) .
Вы бы тогда написали¹
var s = "Victor 1 jagt 2 zwölf 3 Boxkämpfer 4 quer 5 über 6 den 7 Sylter 8 Deich";
var rxNotLetter = new jsx.regexp.RegExp("\\P{Ll}+", "gi");
s = s.replace(rxNotLetter, "");
или
var s = "El 1 veloz 2 murciélago 3 hindú 4 comía 5 feliz 6 cardillo 7 y 8 kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja"
+ " – Съешь 1 же 2 ещё 3 этих 4 мягких 5 французских 6 булок, да 7 выпей 8 чаю.";
var rxNotLetterOrWhitespace = new jsx.regexp.RegExp("[^\\p{Ll}\\p{Lu}\\s]+", "g");
s = s.replace(rxNotLetterOrWhitespace, "");
, чтобы уменьшить зависимость от заглавных / строчных причуд реализаций (и быть более расширяемыми) для RegExp
, который исключает все неписковые символы Юникода (и пробел во втором примере).
TestCase
Обязательно предоставьте также версию базы данных символов Unicode, потому что она большая, динамически изменяемая и поэтому не встроена в regexp.js (JSX содержит подробный текст и сжатую версию сценария UCD; обе могут быть используется, и последний является предпочтительным, regexp.js). Обратите внимание, что соответствующая реализация ECMAScript не должна поддерживать символы за пределами базовой многоязычной плоскости (от U + 0000 до U + FFFF) , поэтому jsx.regexp.RegExp
в настоящее время не может поддерживать символы, даже если они находятся в UCD. Подробности смотрите в документации к исходному коду.
¹ Панграммы из Википедия , свободная энциклопедия.