在javascript中通过正则表达式匹配单词边界处的希伯来字符

match hebrew character at word boundary via regex in javascript?

本文关键字:边界 字符 单词 javascript 正则表达式      更新时间:2023-09-26

我能够匹配并突出显示JS中的这个希伯来字母:

var myText = $('#text').html();
var myHilite = myText.replace(/('u05D0+)/g,"<span class='highlight'>$1</span>");
$('#text').html(myHilite);

小提琴

但不能在单词边界突出显示包含该字母的单词:

/('u05D0)'b/g

小提琴

我知道JS不擅长使用Unicode的正则表达式(服务器端是首选),但我也知道我不擅长正则表达式。这是一个限制在JS或错误在我的语法?

我看不懂希伯来语…这个正则表达式是你想要的吗?

/('S*['u05D0]+'S*)/g

你的第一个正则表达式,/('u05D0+)/g只匹配你感兴趣的字符。

您的第二个正则表达式/('u05D0)'b/g,仅当您感兴趣的字符是单词边界之前的最后一个(或最后重复)字符时才匹配…所以它不会匹配单词开头或中间的字符

编辑:

看这个答案

javascript中的utf-8字边界正则表达式

使用信息的答案,我想出了这个正则表达式,这是正确的吗?

/(['u05D0])(?='s|$)/g

使用下面的regexp如何在一个句子中使用一个单词的所有大小写:

/^u05D0's|'u05D0$|'u05D0's|^'u05D0$/

它实际上使用了4个regexp和OR操作符('|')。

  1. 字符串以您的确切单词开头,后跟一个空格
  2. 或者字符串有空格+单词+空格
  3. 或者字符串以空格+单词
  4. 结尾