在希伯来语中搜索希伯来语悬音标记

Searching for Hebrew cantillation marks in Hebrew

我正在尝试通过 JavaScript 在 unicode 中搜索希伯来语悬音标记 etnachta、u-0591。我输入了以下代码,即使它在那里,我的搜索结果也是错误的。我可以做些什么来让它发挥作用吗?

const verse = ['וַיֹּ֨אמֶר אַבְרָ֜ם אֶל־ל֗וֹט אַל־נָ֨א תְהִ֤י מְרִיבָה֙ בֵּינִ֣י וּבֵינֶ֔יךָ וּבֵ֥ין רֹעַ֖י וּבֵ֣ין רֹעֶ֑יךָ כִּֽי־אֲנָשִׁ֥ים אַחִ֖ים אֲנָֽחְנוּ'];
if (verse.includes(/^\u0591/)) {
  console.log(true);
} else {
  console.log(false);
}

你可以看到符号在哪里 here (Genesis 13:8)。

我什至使用了 JavaScript escapes 结果是:

'\u05D5\u05B7\u05D9\u05BC\u05B9\u05A8\u05D0\u05DE\u05B6\u05E8 \u05D0\u05B7\u05D1\u05B0\u05E8\u05B8\u059C\u05DD \u05D0\u05B6\u05DC\u05BE\u05DC\u0597\u05D5\u05B9\u05D8 \u05D0\u05B7\u05DC\u05BE\u05E0\u05B8\u05A8\u05D0 \u05EA\u05B0\u05D4\u05B4\u05A4\u05D9 \u05DE\u05B0\u05E8\u05B4\u05D9\u05D1\u05B8\u05D4\u0599 \u05D1\u05BC\u05B5\u05D9\u05E0\u05B4\u05A3\u05D9 \u05D5\u05BC\u05D1\u05B5\u05D9\u05E0\u05B6\u0594\u05D9\u05DA\u05B8 \u05D5\u05BC\u05D1\u05B5\u05A5\u05D9\u05DF \u05E8\u05B9\u05E2\u05B7\u0596\u05D9 \u05D5\u05BC\u05D1\u05B5\u05A3\u05D9\u05DF \u05E8\u05B9\u05E2\u05B6\u0591\u05D9\u05DA\u05B8 \u05DB\u05BC\u05B4\u05BD\u05D9\u05BE\u05D0\u05B2\u05E0\u05B8\u05E9\u05C1\u05B4\u05A5\u05D9\u05DD \u05D0\u05B7\u05D7\u05B4\u0596\u05D9\u05DD \u05D0\u05B2\u05E0\u05B8\u05BD\u05D7\u05B0\u05E0\u05D5\u05BC\u05C3'

你的问题与希伯来语或 unicode 字符无关,而是与你的搜索方式有关。

可能是因为您正试图在 数组 字符串中查找正则表达式匹配项。如果是这样,则搜索不正确。要在数组中搜索正则表达式,Array.include 不是你的朋友。您将需要迭代 Array.findIndex()Array.filter()

const verse = ['וַיֹּ֨אמֶר אַבְרָ֜ם אֶל־ל֗וֹט אַחִ֖ים אֲנָֽחְנוּ'];  
if (verse.findIndex( v => v.search(/^\u0591/) ) != -1) ...

如果你想用正则表达式匹配一个简单的字符串,你需要删除你的字符串周围的 [] 并使用 String.search()

 const verse = 'וַיֹּ֨אמֶר אַבְרָ֜ם אֶל־ל֗וֹט אַחִ֖ים אֲנָֽחְנוּ';  
 if (verse.search(/^\u0591/)) ...

最后,如果你只想在字符串中找到 \u0591,你可以简单地使用 String.includes()

const verse = 'וַיֹּ֨אמֶר אַבְרָ֜ם אֶל־ל֗וֹט אַחִ֖ים אֲנָֽחְנוּ';  
if (verse.includes('\u0591')) ...