我有一个用英语工作的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
谢谢!
答案 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