这里的问题是,当从 DOM 读取 HTML 实体时,实体会被解析,因此字符序列‍
会变成单个字符的零宽度连接符。
如果您要在命令行上运行 JavaScript,您的方法将起作用:
$ node
> s = '<div>‍احترام</div>'
'<div>‍احترام</div>'
> s.includes("‍ا")
true
即使在浏览器中,如果您直接使用 JavaScript 控制台,一切都会按照您的预期正常运行:

那么从 DOM 读取(在您的情况下,使用 jQuery)有什么不同?要查看发生了什么,让我们检查字符串中的实际字符:
$(document).ready(function(){
var htm=$("div").text();
console.log(Array.from(htm));
console.log(Array.from("‍ا"));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>‍احترام</div>
这给出了:

啊哈,所以 jQuery 正在解析 HTML 实体!因此,您要搜索的文本应该是JavaScript zwj,而不是 HTML。像这样指定它:
$(document).ready(function(){
var htm=$("div").html();
var shouldRemove="\u{200d}ا";
if (htm.includes(shouldRemove)){
console.log('found');
}
else{
console.log('not found');
}
})
body{font-size:26pt}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>‍احترام</div>
现在它输出true
.
RTL(文本方向)一切都很好!事实证明,这只是 HTML 实体何时被解析的问题。:)