我的文字结构如下:
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;
答案 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>