Код сообщения, которое вы не хотите использовать, является совершенно правильным. Но регулярное выражение basi c не предназначено для иврита. Таким образом, вы должны настроить «без пробелов», равное /S
, в нужный вам диапазон кодов. Быстрое исследование принесло этот результат для charrange, который вы используете на иврите в своем регулярном выражении: \u0590-\u05fe
Вы можете расширить \s
любым разделительным символом, который вы хотите (например, [\s,.\t]+
) для пробелов. , kommas, dots and tabs.
Редактирование кода Этот ответ привел меня к следующему коду решения для вас (обратите внимание, что вы должны читать текст на иврите в обратном направлении):
function getWordAt (str, pos) {
// Perform type conversions.
str = String(str);
pos = Number(pos) >>> 0;
// Search for the word's beginning and end.
nextWhitespace = pos + str.slice(pos).search(/\s/);
str = str.slice(nextWhitespace+1);
var left = str.slice(0, pos + 1).search(/[\u0590-\u05fe]+$/),
right = str.slice(pos).search(/[\s,.\t]+/);
// The last word in the string is a special case.
if (right < 0) {
return str.slice(left);
}
// Return the word, using the located bounds to extract it from the string.
return str.slice(left, right + pos);
}
Редактировать: Добавил следующие строки в код, чтобы получить СЛЕДУЮЩИЙ слово:
nextWhitespace = pos + str.slice(pos).search(/\s/);
str = str.slice(nextWhitespace+1);