在javascript中通过正则表达式在单词边界处匹配希伯来文字符?
我能够用JS匹配并突出显示这封希伯来文信:在javascript中通过正则表达式在单词边界处匹配希伯来文字符?,javascript,regex,unicode,Javascript,Regex,Unicode,我能够用JS匹配并突出显示这封希伯来文信: var myText = $('#text').html(); var myHilite = myText.replace(/(\u05D0+)/g,"<span class='highlight'>$1</span>"); $('#text').html(myHilite); 我知道JS是(最好是服务器端),但我也知道我不擅长正则表达式。这是JS中的限制还是我语法中的错误?我看不懂希伯来语。。。这个正则表达式是你想要的吗
var myText = $('#text').html();
var myHilite = myText.replace(/(\u05D0+)/g,"<span class='highlight'>$1</span>");
$('#text').html(myHilite);
我知道JS是(最好是服务器端),但我也知道我不擅长正则表达式。这是JS中的限制还是我语法中的错误?我看不懂希伯来语。。。这个正则表达式是你想要的吗
/(\S*[\u05D0]+\S*)/g
您的第一个正则表达式/(\u05D0+)/g
仅与您感兴趣的字符匹配
第二个正则表达式,/(\u05D0)\b/g
,仅当您感兴趣的字符是单词边界前的最后一个唯一字符(或最后重复的字符)时才匹配…因此,它与单词开头或中间的字符不匹配
编辑:
看看这个答案
根据答案中的信息,我得出了这个正则表达式,对吗
/([\u05D0])(?=\s |$)/g
使用以下regexp如何,该regexp使用句子中单词的所有大小写:
/^u05D0\s|\u05D0$|\u05D0\s|^\u05D0$/
它实际上使用了4个带有OR运算符(“|”)的正则表达式
似乎在任何位置匹配包含该字母的任何单词:--但基本上,您尝试使用\S而不是\b?您希望仅将该字符作为单词中的最后一个字符进行匹配,还是希望在单词边界的开头进行匹配?我认为仅作为单词中的最后一个字符进行匹配。我不清楚两者之间的区别(我在正则表达式方面也很差劲)。re:edit-这与我想要的位置的字母匹配。我所希望的是匹配字母所在位置的每个单词。。这有意义吗?我将检查q&a..As
\u05D0
是否被视为非单词字符。如果后面跟有另一个非单词字符(如空格),则不会有单词边界。若要在\u05D0
之后有一个单词边界,它后面必须跟一个单词字符[a-zA-Z0-9\
。
/^u05D0\s|\u05D0$|\u05D0\s|^\u05D0$/