首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Regex在字符串模式出现之前和之后插入文本。

使用Regex在字符串模式出现之前和之后插入文本。
EN

Stack Overflow用户
提问于 2012-03-28 02:23:24
回答 4查看 13.4K关注 0票数 0

我试图使用Javascript中的正则表达式将所有系列的“字符”替换为"< pre> < /pre>“。

所以我想把下面的第一行改为第二行:

代码语言:javascript
复制
<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?”的末尾放置一个预开始和结束标记吗?

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-28 02:31:30

代码语言:javascript
复制
con = con.replace(/(?:\s|&nbsp;)+/g, '&nbsp; &nbsp; ');

这样做的优点是匹配任意数量的空格(您的空间和appclay's只匹配2个或更多的空格),确保精确的4个空格(ruakh's不强制使用空格数),不混合<pre><p>。所有这些的缺点是innerHTML中的HTML属性是不安全的,这对您来说可能是一个问题,也可能不是一个问题。要解决这个问题,需要一个解析器或基于DOM的解决方案;如果需要考虑这个问题,请在注释中告诉我,我可以解释如何在DOM中更安全地执行它。

编辑:我现在已经考虑了其他形式的空格(例如\t\n)和现有的&nbsp; (非间断空格)。

再次编辑,注意到以下内容:

之所以这样做,是因为我试图保存/显示空格字符,如果我将整个段落放置在一个预元素中,那么单词包装就会被禁用。

如果不需要支持IE7及其下面的内容,可以将此样式添加到段落或其父代码:white-space: pre-wrap中。然后您可以跳过所有这些文本处理。

票数 1
EN

Stack Overflow用户

发布于 2012-03-28 02:33:46

()捕获匹配,然后用$1引用它

代码语言:javascript
复制
var p = document.getElementById("myP");
var con = p.innerHTML;
con = con.replace(/(\s{2,})/g, "<pre>$1</pre>");
票数 5
EN

Stack Overflow用户

发布于 2012-03-28 02:31:10

你需要用括号组成一个组然后用$1引用它.

代码语言:javascript
复制
var p = document.getElementById("myP");
var con = p.innerHTML;
con = con.replace(new RegExp("([ ]{2,})"), "<pre>$1</pre>");
p.innerHTML = con;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9900326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档