如何使用 javascript 突出显示包含两个已知字符之间随机字符的子字符串?

How to highlight a substring containing a random character between two known characters using javascript?

我在数据框中有一堆字符串,如下所示。

             v1                    v2
ARSTNFGATTATNMGATGHTGNKGTEEFR   SEQUENCE1
BRCTNIGATGATNLGATGHTGNQGTEEFR   SEQUENCE2
ARSTNFGATTATNMGATGHTGNKGTEEFR   SEQUENCE3

我想搜索并突出显示 v1 列中每个字符串中的一些选定子字符串。例如,假设要搜索的子字符串中的第一个字母为 "N",最后一个字母为 "G",中间的字母可以是任何字母,如 "NAG" 或 "NBG" 或"NCG" 或 "NDG" 等等。为了突出显示如下所示的三个字符的子字符串,我正在编写 26 行代码以显示在 R Shiny 选项卡中,假设“N”和“之间可能有 26 个字母中的任何一个” G”。我只是想优化代码。我是 JS 的新手。希望我很清楚。如果不是在投票之前,如果您需要更多解释或详细信息,请告诉我。

ARSTNFGATTATNMGATGHTGNKGTEEFR

BRCTNIGATGATNLGATGHTGNQGTEEFR

ARSTNFGATTATNMGATGHTGNKGTEEFR

这里提供了我使用的26行代码中有代表性的2行(第一行和最后一行)的精简代码。

datatable(DF, options = list(rowCallback=JS("function(row,data) {
  data[0] = data[0].replace(/NAG/g,'<span style=\"color:blue; font-weight:bold\">NAG</span>');
  .....
  data[0] = data[0].replace(/NZG/g, '<span style=\"color:blue; font-weight:bold\"\">NZG</span>');
  $('td:eq(0)', row).html(data[0]);}"), dom = 't'))

我想你想要的正则表达式是:/N[A-Z]G/g

如果您还希望它适用于小写字母:/N[A-Za-z]G/g

我找到了一个简单的解决方案。可能对像我这样的人有用。

datatable(DF, options = list(rowCallback = JS("function(row,data) {
    data[0] = data[0].replace(/N[A-Z]G/g,'<span style=\"color:blue; font-weight:bold\">$&</span>');
    $('td:eq(0)', row).html(data[0]);}"), dom = 't'))