【问题标题】:Highlighting a specific area of a grid containing <br> and reformatting the grid突出显示包含 <br> 的网格的特定区域并重新格式化网格
【发布时间】:2016-05-07 01:12:27
【问题描述】:

我有一个看起来像这样的字符串

16427171479924442928230863465674813919123162824586<br>17866458359124566529476545682848912883142607690042<br>2421902671055626321111109370544217506941658960408<br>07198403850962455444362981230987879927244284909188<br>

它实际上是一个没有换行符的网格(只有&lt;br&gt;,没有实际的换行符 (\n))

16427171479924442928230863465674813919123162824586<br>
17866458359124566529476545682848912883142607690042<br>
24219022671055626321111109370544217506941658960408<br>
07198403850962455444362981230987879927244284909188<br>

我想加粗这个网格的某个部分,每次都会改变,对于这个例子,假设我想加粗 8617。(这个数字可能更长并且可以拉伸多条线,我的实际网格要大得多)

我希望它看起来像这样:

16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188

我试过用这个(maxStr是我要替换的数字串)

gridString.replace(maxStr, "<strong>" + maxStr + "</strong>")

但这不起作用,因为字符串中有&lt;br&gt;,所以我实际上必须替换的字符串是86&lt;br&gt;17

我的问题是:如何用粗体版本替换跨越多行的数字的特定部分,同时将 &lt;br&gt; 保留在我需要的位置。

JSFiddle 说明了我的问题: https://jsfiddle.net/5d21c2r3/

旁注:我尝试了一个解决方案,我从网格中删除了所有 &lt;br&gt;,然后替换了文本,然后每 50 个字符重新添加 &lt;br&gt;,但这也不起作用,因为 &lt;strong&gt;&lt;/strong&gt; 最终添加了很多字符。

【问题讨论】:

  • 要替换时的数据在哪里?它已经在 DOM 中了吗?它是您应用程序中的字符串吗?其他地方?
  • 它是一个变量中的字符串,如果你想确切地看到代码的样子,你可以在 jsfiddle 中查看
  • 我可能只是编写一个快速解析器,它接收要定位的数字并一次手动搜索一个文本。这样它就可以自动越过它可能找到的任何&lt;br&gt;

标签: javascript jquery regex


【解决方案1】:

您可以创建一个允许在任意数字之间选择&lt;br&gt; 的正则表达式:

var toReplace = "8617";

var regex = new RegExp("(" + toReplace.split("").join("(?:<br>)?") + ")")

document.write(gridString.replace(regex, "<strong>$1</strong>"))

updated JS Fiddle

说明

生成的正则表达式是/(8(?:&lt;br&gt;)?6(?:&lt;br&gt;)?1(?:&lt;br&gt;)?7)/(?:) 是非捕获组。 ? 表示它是可选的——它可以出现零次或一次。开头的( 和结尾的) 是一个捕获组——它允许您稍后将匹配的子字符串用作$1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多