Javascript 正则表达式中的特定阿拉伯语单词

A specific Arabic word in Javascript regex

我需要将字符串中的特定阿拉伯语单词替换为 صح 之前或之后的白色 space 字符的任何变体。我使用以下正则表达式:

/\s*(صح)\s*/

它在 Regex101 DEMO 上运行良好。但是,此正则表达式在 Javascript 代码中似乎不起作用,如下所示:

txt1 = txt.replace(/\s*(صح)\s*/ig,inpt)

我尝试使用 RegExp 对象,例如:

f = "/\s*(صح)\s*/ig"
r = new RegExp(f)
txt1 = txt1.replace(r,inpt);

终于知道JavascriptRegEx不读Unicode字符,我试着把صح这个词解码成f = "/\s*(u89-u81)\s*/i"也没有结果。在这里我不是问角色的class。我只是指一个特定的词。

编辑

r片段的使用:

txt1 = txt.replace(' صح',inpt);
     if (txt1 == txt){
       f = "/\s*(صح)\s*/ig"
       r = new RegExp(f)
       txt1 = txt1.replace(r,inpt);

     }

您编辑的代码段中的 RegExp 语法错误

f = /صح/gi //no quotes
r = new RegExp(f)
txt1 = 'صحasdf'.replace(r,'!');

这按预期工作。见 documentation.

第一个:

/\s*(صح)\s*/ig // is not the same as new RegExp("/\s*(صح)\s*/ig")
// it is, however, the same as
new RegExp("\s*(صح)\s*", "ig")

只要不触及周围的空白,就万事大吉。虽然,我不知道阿拉伯语中的空格有多重要,所以我假设有情有可原的情况(也许就像 \b):

应该这样做:

yournewstring = 'something' // or whatever 
f = /(\s*)صح(\s*)/gi // capture the whitespace 
r = new RegExp(f)

// put the whitespace back
txt1 = 'test صح   string'.replace(r,''+yournewstring+'');