正则表达式不是一个很好的工具。您应该使用 DOM,而不是使用原始 HTML 字符串。
对于一个快速而肮脏的解决方案,它假定您的字符串中除了分隔标签的那些之外没有 <
或>
字符,您可以尝试这个,但是:
result = subject.replace(/\s+(?=[^<>]*<)/g, "$&<br/>");
<br/>
仅当下一个尖括号是左尖括号时,才会插入后面的空格。
解释:
\s+ # Match one or more whitespace characters (including newlines!)
(?= # but only if (positive lookahead assertion) it's possible to match...
[^<>]* # any number of non-angle brackets
< # followed by an opening angle bracket
) # ...from this position in the string onwards.
将其替换为$&
(包含匹配的字符)加号<br/>
。
这个正则表达式不检查是否有>
更远的后面,因为这需要一个积极的look*behind*断言,而JavaScript不支持这些。所以你无法检查,但如果你控制了 HTML 并确定我上面提到的条件得到满足,那应该不是问题。