Javascript 替换Nodejs中字符串中的乌尔都语单词

Javascript 替换Nodejs中字符串中的乌尔都语单词,javascript,regex,string,unicode,replace,Javascript,Regex,String,Unicode,Replace,我想对乌尔都语单词执行替换字符串操作,但下面的代码没有用aap替换。我使用单词边界,这样它就可以替换整个单词,而不是单词的各个部分 var str ="آپ کا نام کیا ہے؟"; var res = str.replace(/\bآپ\b/g, "aap"); console.log(res); 我期望得到以下结果: کا نام کیا ہے؟ aap 尝试不使用\b,如下所示 var str=“آ; var res=str.replace(/(^ |\s)آپ(?=\s

我想对乌尔都语单词执行替换字符串操作,但下面的代码没有用
aap
替换
。我使用单词边界,这样它就可以替换整个单词,而不是单词的各个部分

var str ="آپ کا نام کیا ہے؟";
var res = str.replace(/\bآپ\b/g, "aap");
console.log(res);
我期望得到以下结果:

 کا نام کیا ہے؟ aap

尝试不使用\b,如下所示

var str=“آ;
var res=str.replace(/(^ |\s)آپ(?=\s |$)/g,“aap”);

控制台日志(res)
\b
恐怕是以英语为中心的,而且实际上甚至不太擅长以英语为中心。:-)(例如,在“以英语为中心”的“英语”结尾处匹配。)

您可以将lookarounds与否定的Unicode“字母”类别一起使用,以检查单词边界。这些特性存在于最新的JavaScript规范中,但支持非常不稳定。不过,你可以向它扔一个图书馆:史蒂文·莱维坦(Steven Levithan):

var str=“آ;

var rex=XRegExp(“(?我不太确定这个表达式

(?=\s|)(آپ)(?=\s|$)
可能接近我们想要的,但这可能是一个选择

在此,对该表达式进行了解释

试验
const regex=/(?=\s|)(?=\s|$)/gm;
const str=`آپ
آپ کا نام کیا ہے؟
آپ کا نام کیا ہے؟ آپ کا نام کیا ہے؟
آپکاآپکا نام کیا ہے؟آپکا نام کیا ہے؟`;
const subst=`app`;

console.log(str.replace(regex,subst));
我正在使用单词边界,以便它替换整个单词,而不是单词的部分。我们无法删除单词boundaries@MuhammadNaufil,(^ |\s)آپ(?=\s |$)同样的边界b,试试看now@MuhammadNaufil,bounders\b不适用于unicode字符@GhoulAhmed-是的,但仅适用于以英语为中心的字符(虽然不是很好:-)。(请记住,所有字符都是“unicode字符”。“我希望得到以下输出“由于RTL与LTR方面的原因,替换将把
aap
放在左侧,例如:
aapکاکایہ؟