我正在尝试通过JavaScript搜索unicode中的希伯来语标记etnachta,u-0591。我输入了以下代码,即使它在那里,我的搜索也是错误的。有什么我可以做的不同让它起作用吗?
const verse = ['וַיֹּ֨אמֶר אַבְרָ֜ם אֶל־ל֗וֹט אַל־נָ֨א תְהִ֤י מְרִיבָה֙ בֵּינִ֣י וּבֵינֶ֔יךָ וּבֵ֥ין רֹעַ֖י וּבֵ֣ין רֹעֶ֑יךָ כִּֽי־אֲנָשִׁ֥ים אַחִ֖ים אֲנָֽחְנוּ'];
if (verse.includes(/^\u0591/)) {
console.log(true);
} else {
console.log(false);
}

你可以看到符号在哪里here(创世记13:8)。
我甚至使用了JavaScript escapes,它提出了:
' \ u05D5 \ u05B7 \ u05D9 \ u05BC \ u05B5 \ 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 \ u05D \ u05B5 \ u05D9 \ u05E0 \ u05B4 \ u05A3 \ u05D9 \ u05D5 \ u05BC \ u05D1 \ u05B5 \ u05D9 \ u05E0 \ u05B6 \ u0594 \ u05D9 \ u05DA \ u05B8 \ u05D5 \ u05BC \ u05D1 \ u05B5 \ u05A5 \ u05D9 \ u05DF \ u05A5 \ u05B9 \ u05E2 \ u05B5 \ u05D \ 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'
答案 0 :(得分:1)
你的问题与希伯来语或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')) ...