【发布时间】:2011-01-03 18:04:49
【问题描述】:
我正在尝试查找字符串是否以 RTL 语言/希伯来语开头(第一个字母)宽度。
有什么想法吗?
【问题讨论】:
标签: javascript regex hebrew right-to-left
我正在尝试查找字符串是否以 RTL 语言/希伯来语开头(第一个字母)宽度。
有什么想法吗?
【问题讨论】:
标签: javascript regex hebrew right-to-left
这将找到在Hebrew Unicode 代码点范围内编码的希伯来字母:[\u0590-\u05FF]
【讨论】:
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 它被认为是一个希伯来字符
【讨论】:
特别是对于希伯来语,这个问题已经得到解答 - 关于所有范围:
特别是对于 JS,我会推荐一个工具来构建您的正则表达式 - 请参阅 Unicode range RegExp generator(编译适合在 JavaScript 中使用的字符范围)
[只需选择希伯来语或您想要的脚本或范围]
【讨论】: