正则表达西班牙语和阿拉伯语

时间:2012-06-04 12:59:47

标签: javascript regex unicode

如何编写与所有有效的西班牙语和阿拉伯语单词匹配的正则表达式。
我知道,英语为a-zA-z,希伯来语为א-ת,俄语为А-Яа-яёЁ
我使用Javascript。

1 个答案:

答案 0 :(得分:16)

英语单词的a-zA-Z范围简直无比,天真无邪。它遗漏了各种带有重音符号和其他特殊标记的字母,这些字母用在借词等中。例如,它与我的第一句话中的“天真”一词不符。请改用\p{Latin}脚本。

希伯来词的范围א-ת也是错误的。它遗漏了希伯来语的表现形式,cantillation标记,意第绪语有向图等等。请改用\p{Hebrew}脚本。

俄语的范围А-Яа-яёЁ再次不完整和错误。请改用\p{Cyrillic}脚本。

西班牙字母表使用与英语相同的26个字母,加上ñÑ。但同样,不要将这些硬编码到一个范围内。许多西班牙语单词使用重音元音。使用\p{Latin}脚本匹配西班牙语单词。正则表达不会帮助您区分西班牙语和英语。

对于阿拉伯语,请使用\p{Arabic}脚本。

JavaScript,正则表达式和Unicode

你说你正在使用JavaScript。不幸的是,JavaScript几乎不支持Unicode内置。在JavaScript中,您需要使用XRegExp library及其Unicode addon。这将允许您在正则表达式中使用我在上面提到的所有Unicode脚本。

脚本与块

始终支持Unicode脚本而不是Unicode块。块与特定脚本中的代码点匹配不佳。块通常会遗漏许多不完整范围之外的重要代码点,并包含许多未分配任何字符的代码点。脚本包括所有相关的代码点,不再包括。