javascript匹配双花括号内的希伯来词

时间:2017-07-09 14:04:30

标签: javascript regex

我有一个用英语工作的js函数,但我在希伯来语中得到错误

该函数匹配{{ }}内的字符串中的所有单词,并返回array中的双花括号内的单词而没有大括号 字符串可以包含英语和非英语单词,如下所示:{{test}} {{בדיקה}} hi this is my test {{test2}}

var str_eng =  "{{test}} {{test1}}";
var str_non_eng = "{{בדיקה}} {{עעע}}";

str_eng.match(/{{\s*[\w\.]+\s*}}/g).map(function(x) { return x.match(/[\w\.]+/)[0];  }) //array[ "test","test1" ] //ok

str_non_eng.match(/{{\s*[\w\.]+\s*}}/g).map(function(x) { return x.match(/[\w\.]+/)[0];  }) // error not working

谢谢!

2 个答案:

答案 0 :(得分:2)

\w与希伯来语字符不匹配 - 要做到这一点,您需要将希伯来语的Unicode范围与[\u0590-\u05FF]匹配 - 请参阅here

您可以将\w[\u0590-\u05FF]混合以匹配ASCII和希伯来语:

// var str_non_eng = "{{בדיקה}} {{עעע}}";
var str_non_eng = "{{test}} {{בדיקה}} hi this is my test {{test2}}";

var r1 = /{{\s*[\w\u0590-\u05FF\.]+\s*}}/g
var r2 = /[\w\u0590-\u05FF\.]+/;

var foo = str_non_eng.match(r1).map(function(x) {
  return x.match(r2)[0];
});
console.log(foo);

答案 1 :(得分:0)

你不能使用\ w作为希伯来字符。 使用以下内容:

msiexec /i node.msi /qn+ ADDLOCAL=ALL REMOVE=NodePerfCtrSupport,NodeEtwSupport