带有 highlight-text-inside-a-textarea 和 JS RegExp 的半高亮关键字

问题描述

我正在使用 highlight-text-inside-a-textarea 插件 https://codersblock.com/blog/highlight-text-inside-a-textarea/,它工作正常,但我对重音词有问题。例如,这里是我要突出显示的关键字数组 $kw = array("excel","Réseau","R","electrom"); 但正如您所看到的,关键字“electromécanique”被突出显示了一半。我怎样才能避免这种情况?这可能与 RegExp 有关。

enter image description here

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="/jquery/highlight-within-textarea.js"></script>
<link rel="stylesheet" type="text/css" href="/jquery/highlight-within-textarea.css"/>

</style>
</head>
<body>

<h1>Highlighted Keywords Test</h1>

<div id="job">
  <textarea cols="50" rows="5">excel Réseau Robert electromécanique R electromecanique</textarea></div>

<?PHP

$kw = array("excel","electrom");

        foreach($kw as $kws) {
   
      $keywords_highlight[] = $kws;
      
        }

?>

<script>    

var arrHighlight =  <?PHP echo json_encode($keywords_highlight); ?>;

function escapeRegExp(arrHighlight) {
  return arrHighlight.replace(/[.*+?^${}()|[\]\\]/g,'\\$&'); // $& means the whole matched string
}

var pattern = new RegExp("(?<![\\w-])(?:" + arrHighlight.map(escapeRegExp).join("|") + ")(?![\\w-])","gi");

$('textarea').highlightWithinTextarea({
    highlight: pattern
});

</script>

</body>
</html>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)