我试图使用Javascript中的正则表达式将所有系列的“字符”替换为"< pre> < /pre>“。
所以我想把下面的第一行改为第二行:
<p>There should be gaps of 4 chars tween each word</p>
<p>There<pre> </pre>should<pre> </pre>be<pre> </pre>gaps<pre> </pre>of<pre> </pre>4<pre> </pre>chars<pre> </pre>tween<pre> </pre>each<pre> </pre>word</p>
// Or if I cannot place <pre>'s inside a <p> element then replace them with
// transparent "_" chars
<p>There<font style="color: transparent">____</font>should...</p>我之所以这样做,是因为我试图保存/显示空格字符,如果我将整个段落放置在一个预元素中,那么单词包装就会被禁用。
,你能帮我得到我的正则表达式,在每组“chars?”的末尾放置一个预开始和结束标记吗?
var p = document.getElementById("myP");
var con = p.innerHTML;
con = con.replace(new RegExp("[ ]{2,}"), "<pre> ");
con = con.replace(new RegExp("[ ]{2,}"), " </pre>");
p.innerHTML = con;
// This is incorrect because it removes all the space chars and only leaves one there
// Test string
// Test<pre> </pre>string // there should be 4 space chars here发布于 2012-03-28 02:31:30
con = con.replace(/(?:\s| )+/g, ' ');这样做的优点是匹配任意数量的空格(您的空间和appclay's只匹配2个或更多的空格),确保精确的4个空格(ruakh's不强制使用空格数),不混合<pre>和<p>。所有这些的缺点是innerHTML中的HTML属性是不安全的,这对您来说可能是一个问题,也可能不是一个问题。要解决这个问题,需要一个解析器或基于DOM的解决方案;如果需要考虑这个问题,请在注释中告诉我,我可以解释如何在DOM中更安全地执行它。
编辑:我现在已经考虑了其他形式的空格(例如\t或\n)和现有的 (非间断空格)。
再次编辑,注意到以下内容:
之所以这样做,是因为我试图保存/显示空格字符,如果我将整个段落放置在一个预元素中,那么单词包装就会被禁用。
如果不需要支持IE7及其下面的内容,可以将此样式添加到段落或其父代码:white-space: pre-wrap中。然后您可以跳过所有这些文本处理。
发布于 2012-03-28 02:33:46
用(和)捕获匹配,然后用$1引用它
var p = document.getElementById("myP");
var con = p.innerHTML;
con = con.replace(/(\s{2,})/g, "<pre>$1</pre>");发布于 2012-03-28 02:31:10
你需要用括号组成一个组然后用$1引用它.
var p = document.getElementById("myP");
var con = p.innerHTML;
con = con.replace(new RegExp("([ ]{2,})"), "<pre>$1</pre>");
p.innerHTML = con;https://stackoverflow.com/questions/9900326
复制相似问题