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+'');
我需要将字符串中的特定阿拉伯语单词替换为 صح
之前或之后的白色 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+'');