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

时间:2013-02-26 17:55:54

标签: javascript regex unicode

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

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

fiddle

但无法突出显示包含字母边界处字母的字词:

/(\u05D0)\b/g

fiddle

我知道JS是bad at regex with Unicode(服务器端是首选),但我也知道我在正则表达式上表现不佳。这是JS的限制还是我的语法错误?

2 个答案:

答案 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运算符('|')。

  1. 字符串以您的确切字词后跟空格开头
  2. 或者你的字符串有空格+你的单词+空格
  3. 或者你的字符串以空格+你的词结尾
  4. 或者你的字符串只是确切的字。