Вопрос по javascript, regex, unicode – Регулярное выражение испанских и арабских слов

2

Как я могу написать регулярное выражение, которое соответствует всем действительным испанским и арабским словам.
На английском я знаю, этоa-zA-zна иврите этоא-ת, по-русскиА-Яа-яёЁ.
Я использую Javascript.

@Qtax может быть, это может помочь мне, спасибо Alex Shvarz
возможный дубликатJavascript + Unicode Qtax
зачем переводить арабский на испанский, вы можете использовать слова, которые они вас поймут;) наполовину шучу;) Sebas
@Sebas Я не могу перевести с испанского на арабский. Я хочу проверить поле ввода INPUT, когда текст должен быть на испанском или арабском языке. Alex Shvarz

Ваш Ответ

1   ответ
16

a-zA-Z для английских слов это неприемлемо просто и наивно. Он пропускает всевозможные буквы с акцентами и другими специальными отметками, которые используются в заимствованных словах и т. Д. Например, он не будет соответствовать слову «na» # ve »из моего первого предложения. Использовать\p{Latin} сценарий, вместо.

א-ת для еврейских слов тоже неправильно. В нем не представлены формы представления на иврите, знаки кантилляции, идишские диграфы и многое другое. Использовать\p{Hebrew} сценарий, вместо.

А-Яа-яёЁ для русских опять неполно и неправильно. Использовать\p{Cyrillic} сценарий, вместо.

В испанском алфавите используются те же 26 букв, что и в английском, плюс & # xF1; & # xD1 ;. Но опять же, не указывайте их жестко в диапазоне. Многие испанские слова используют ударные гласные. Использовать\p{Latin} сценарий, чтобы соответствовать испанским словам. Регулярные выражения не помогут вам отличить испанский от английского.

Для арабского языка используйте\p{Arabic} скрипт.

JavaScript, regex, and Unicode

Вы сказали, что используете JavaScript. К сожалению, JavaScript имеет очень небольшую поддержку встроенного Unicode. В JavaScript вам нужно использоватьБиблиотека XRegExp И егоАддон юникода, Это позволит вам использовать все сценарии Unicode, которые я упоминал выше, в ваших регулярных выражениях.

Scripts vs blocks

Всегда отдавайте предпочтение сценариям Unicode, а не блокам Unicode. Блоки плохо совпадают с точками кода в конкретном скрипте. Блоки очень часто пропускают много важных кодовых точек, выходящих за пределы их неполного диапазона, и включают в себя множество кодовых точек, которым не был назначен какой-либо символ. Сценарии включают все соответствующие кодовые точки и не более.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Alex Shvarz

Похожие вопросы