我能够在JS中匹配并突出显示这个希伯来字母:
var myText = $('#text').html();
var myHilite = myText.replace(/(\u05D0+)/g,"<span class='highlight'>$1</span>");
$('#text').html(myHilite);
但无法突出显示包含字母边界处字母的字词:
/(\u05D0)\b/g
我知道JS是bad at regex with Unicode(服务器端是首选),但我也知道我在正则表达式上表现不佳。这是JS的限制还是我的语法错误?
答案 0 :(得分:2)
我读不懂希伯来文...这个正则表达式做了你想要的吗?
/(\S*[\u05D0]+\S*)/g
您的第一个正则表达式/(\u05D0+)/g
仅匹配您感兴趣的角色。
您的第二个正则表达式/(\u05D0)\b/g
仅在您感兴趣的字符是单词边界之前的最后一个(或最后重复的)字符时才匹配...这样就不会匹配一个单词的开头或中间的那个字符。
编辑:
看看这个答案
utf-8 word boundary regex in javascript
使用该答案中的信息,我想出了这个正则表达式,这是正确的吗?
/([\u05D0])(?=\s|$)/g
答案 1 :(得分:0)
使用以下正则表达式如何使用句子中所有单词的情况:
/^u05D0\s|\u05D0$|\u05D0\s|^\u05D0$/
它实际上使用4个正则表达式和OR运算符('|')。