JavaScript - 如何找到希伯来语?

25

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

有什么想法吗?

5个回答

35

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


以上对我不起作用。有没有示例的机会?我正在尝试这个(http://jsbin.com/iXOzEHI/1/edit),但它返回false。 - hitautodestruct
2
@hitautodestruct 这可能有点晚了,但是作为参考,请注意您的代码示例包含一个短划线,而不是连字符,**-**。这使得您的字符类范围无效,并导致模式不匹配。请参见此处的更正示例 - Boaz
2
@Boaz 谢谢你!永远不会太晚 :-) - hitautodestruct
请注意,\u2135-\u2138\ufb1d-\ufb4f也是希伯来字母,尽管它们不属于“希伯来”Unicode块的一部分。 - undefined

25

14

    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">


嗨。这是一段很棒的代码,但我觉得我搞砸了它。我正在尝试检查带空格的希伯来字符。由于某种原因,LegalChars无法正常工作。 - user13708028
嗨,試試這個: LegalChars = new RegExp("^[\u0590-\u05FF ]+$"); | https://codverter.com/src/webeditor - Oranit Dar

4

如果 (str.charCodeAt(0) >= 0x590) && (str.charCodeAt(0) <= 0x5FF),则被视为希伯来字符。


1
我会说“绝对没错”而不是“很可能”。 :) - Joey
实际上,有一些情况它会失败。例如,以数字开头的段落并不一定是英语/从左到右的段落。 - Tomer Cohen

0

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

特别是对于JS,我建议使用一个工具来构建您的正则表达式 - 请参见Unicode range RegExp generator(编译适用于JavaScript的字符范围)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接