Javascript - 如何找到希伯来语?

IT技术 javascript regex hebrew right-to-left
2021-02-16 08:14:55

我正在尝试查找字符串是否以 RTL 语言/希伯来语开头(第一个字母)宽度。

有任何想法吗?

5个回答

这将找到在希伯来语Unicode 代码点范围内编码的希伯来语字母[\u0590-\u05FF]

以上对我不起作用。有机会举个例子吗?我正在尝试这个,它返回false。
2021-04-18 08:14:55
@hitautodestruct这可能有点为时已晚,但对参考请注意,您的代码示例包含一个破折号-而不是一个连字符,- 这会使您的字符类的范围无效并导致模式不匹配。请参阅此处的更正示例
2021-05-05 08:14:55
@Boaz 谢谢你!永远都不迟 :-)
2021-05-17 08:14:55

JavaScript 不支持像\p{InHebrew}(或类似的东西)的正则表达式脚本但是,它确实支持 Unicode 转义,因此您可以使用如下正则表达式:

/[\u0590-\u05FF]/

这将匹配单个希伯来字符。

请参阅:http : //unicode.org/charts/PDF/U0590.pdf 和:http : //www.regular-expressions.info/unicode.html

    function is_heb(Field) {
        // First choose the required validation

        HebrewChars = new RegExp("^[\u0590-\u05FF]+$");
        AlphaNumericChars = new RegExp("^[a-zA-Z0-9\-]+$");
        EnglishChars = new RegExp("^[a-zA-Z\-]+$");
        LegalChars = new RegExp("^[a-zA-Z\-\u0590-\u05FF ]+$"); //Note that this one allows space 

        // Then use it

        if (!LegalChars.test(Field)) {
            return false;
        } else
            return true;
    }
<input id="the_text" type="text" value="בדיקה" />
<br /><button onclick="document.getElementById('the_result').value = is_heb(document.getElementById('the_text').value)">Is it Hebrew?</button>
<br /><br />
Result:
<br /><input id="the_result" type="text">

if (str.charCodeAt(0) >= 0x590) && (str.charCodeAt(0) <= 0x5FF) then 它被认为是一个希伯来字符

“最可能”?我会说“肯定”:)
2021-04-20 08:14:55
实际上在某些情况下它会失败。例如,以数字开头的段落不一定是英文/LTR 段落。
2021-04-20 08:14:55

特别是对于希伯来语,问题已经得到解答 - 关于所有范围:

特别是对于 JS,我会推荐一个工具来构建您的正则表达式 - 请参阅Unicode 范围 RegExp 生成器(编译适合在 JavaScript 中使用的字符范围)

[只需选择希伯来语或您想要的脚本或范围]