正则表达式在html div中匹配换行符

时间:2018-06-07 16:27:58

标签: javascript regex

我的文字结构如下:

1) CF582 Sortis (10): x 1 tabl.;
2) CF583 Sortis (20 mg): 2 x 1 tabl.;
3) CF734 Sortis (40 mg): 3 x 1 tabl.;

我需要一个正则表达式,匹配每行开头的所有数字(但不是在开头之后的某个地方,如第一行的 10) )加上结束括号

对于像这样的纯文本来说,这不是什么大问题。问题是文本预先格式化为我附加的片段的div innerHTML,而且^和n字符都不匹配新行。



var myTherapyDiv = document.getElementById("mytherapy");

myTherapyDiv.innerHTML = myTherapyDiv.innerHTML.replace(/;(\s*\d*\))/g, ";<br>\n$1")

// therapy numbered list outline
myTherapyDiv.innerHTML = myTherapyDiv.innerHTML.replace(/(\b\d+\))/g, "<span style='color: red'>$1</span>");
&#13;
<div class="inputcontents" id="mytherapy"> 1) CF582 Sortis (10): x 1 tabl.; 2) CF583 Sortis (20 mg): 2 x 1 tabl.; 3) CF734 Sortis (40 mg): 3 x 1 tabl.;</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

如果你想突出显示每行的第一个数字,那么就可以这样做。

获取所需元素的RewriteEngine On RewriteCond %{REQUEST_URI} !^/htdocs/ RewriteRule ^(.*)$ /htdocs/$1 [L,R=301] ,将其拆分为textContent并在循环中单独处理每一行。

;
var myTherapyDiv = document.getElementById("mytherapy");
const lines = myTherapyDiv.textContent.split(';').filter(v => v !== '');
myTherapyDiv.innerHTML = '';

lines.forEach(line => {
  line = line.replace(/(\s*\d*\))/, "<span style='color: red'>$1</span>");
  myTherapyDiv.innerHTML += line + ";<br />";
});

如果你只想使用正则表达式解决它,那么你可以试试这个(虽然不是很优雅)。

<div class="inputcontents" id="mytherapy"> 1) CF582 Sortis (10): x 1 tabl.; 2) CF583 Sortis (20 mg): 2 x 1 tabl.; 3) CF734 Sortis (40 mg): 3 x 1 tabl.;</div>
var myTherapyDiv = document.getElementById("mytherapy");

myTherapyDiv.innerHTML = myTherapyDiv.innerHTML.replace(/;(\s*\d*\))/g, ";<br>\n$1")
myTherapyDiv.innerHTML = myTherapyDiv.innerHTML.replace(/^\s*(\d+\))/, "<span style='color: red'>$1</span>");
myTherapyDiv.innerHTML = myTherapyDiv.innerHTML.replace(/<br>(\s*\d+\))/g, "<br><span style='color: red'>$1</span>");

可以通过将第一个<div class="inputcontents" id="mytherapy"> 1) CF582 Sortis (10): x 1 tabl.; 2) CF583 Sortis (20 mg): 2 x 1 tabl.; 3) CF734 Sortis (40 mg): 3 x 1 tabl.;</div>与第三个replace合并来简化。

var myTherapyDiv = document.getElementById("mytherapy");

myTherapyDiv.innerHTML = myTherapyDiv.innerHTML.replace(/;(\s*\d*\))/g, ";<br><span style='color: red'>$1</span>");
myTherapyDiv.innerHTML = myTherapyDiv.innerHTML.replace(/^\s*(\d+\))/, "<span style='color: red'>$1</span>");
<div class="inputcontents" id="mytherapy"> 1) CF582 Sortis (10): x 1 tabl.; 2) CF583 Sortis (20 mg): 2 x 1 tabl.; 3) CF734 Sortis (40 mg): 3 x 1 tabl.;</div>