如何编写匹配所有有效西类牙语和阿拉伯语单词的正则表达式。
我知道的英文是a-zA-z
, 在希伯来语中是 א-ת
, 俄语 А-Яа-яёЁ
.
我使用Javascript。
最佳答案
范围a-zA-Z
因为英语单词的简单和天真令人无法接受。它遗漏了各种带有重音符号的字母以及在借词等中使用的其他特殊标记。例如,它不会匹配我第一句话中的“naïve”这个词。使用 \p{Latin}
脚本,而不是。
范围א-ת
因为希伯来文也是错误的。它省略了希伯来语表示形式、cantilation 标记、意第绪语有向图等。使用 \p{Hebrew}
脚本,而不是。
范围А-Яа-яёЁ
因为俄语又是不完整和错误的。使用 \p{Cyrillic}
脚本,而不是。
西类牙语字母表使用与英语相同的 26 个字母,外加 ñÑ。但同样,不要将这些硬编码到一个范围内。许多西类牙语单词使用重音元音。使用 \p{Latin}
脚本来匹配西类牙语单词。正则表达式不会帮助您区分西类牙语和英语。
对于阿拉伯语,请使用 \p{Arabic}
脚本。
JavaScript、正则表达式和 Unicode
你说你在使用 JavaScript。不幸的是,JavaScript 对 Unicode 内置支持很少。在 JavaScript 中,您需要使用 XRegExp library和它的 Unicode addon .这将允许您在正则表达式中使用我上面提到的所有 Unicode 脚本。
脚本与块
始终支持 Unicode 脚本而不是 Unicode 块。块与特定脚本中的代码点匹配不佳。块经常会遗漏许多不在其不完整范围内的重要代码点,并包含许多尚未分配任何字符的代码点。脚本包括所有相关的代码点,仅此而已。
关于javascript - 正则表达式西类牙语和阿拉伯语单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10881765/