我正在尝试找出一个字符串是否以RTL语言/希伯来语开头(即第一个字母为RTL字符)。
有什么想法吗?
我正在尝试找出一个字符串是否以RTL语言/希伯来语开头(即第一个字母为RTL字符)。
有什么想法吗?
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">
如果 (str.charCodeAt(0) >= 0x590) && (str.charCodeAt(0) <= 0x5FF),则被视为希伯来字符。
特别是对于希伯来语,问题已经得到了回答 - 关于所有范围:
特别是对于JS,我建议使用一个工具来构建您的正则表达式 - 请参见Unicode range RegExp generator(编译适用于JavaScript的字符范围)
[只需选择您想要的希伯来语或脚本或范围]
\u2135-\u2138
和\ufb1d-\ufb4f
也是希伯来字母,尽管它们不属于“希伯来”Unicode块的一部分。 - undefined