1

这是我的功能:

function process() {
var content = document.getElementById('content').value;
content = content.replace(/(<tt>(.*?)<tt>)/g, '$2');
document.getElementById('content').value = content;
}

这是我的 HTML:

<textarea id="content" cols="48" rows="8"></textarea><br />
<input type="button" value="Process" onclick="process()" />

示例代码:

<tt>hello<tt>

我的问题的目的是找出我是否可以用“下划线”替换“空格”例如,目前如果您要从上面获取我的示例代码并通过我的函数运行它,您将省略以下代码:

hello

如果您要运行此代码:

<tt>hel lo<tt>

通过该函数,这将是您的结果:

hel lo

我更喜欢的结果是:

hel_lo

它将空格替换为下划线。我确实意识到我可以插入这样的东西:

content = content.replace(/()/g, '_');

进入我的函数,但是如果要这样做,然后在下面运行此代码:

<tt>d j<tt>1 2

那么结果将是

d_j1_2

而不是我更喜欢的

d_j1 2

总而言之,我想用下划线替换一个空格,但仅限于我的

<tt><tt>

标签。始终感谢您的帮助,并在此先感谢您。我还将提供此示例的链接:jsfiddle example

4

1 回答 1

1

想到的第一个方法如下:

content = content.replace(/(<tt>(.*?)<tt>)/g, function(m,p1,p2) {
             return p2.replace(/ /g,"_");
          });

.replace()方法接受第二个参数中的回调,以便您可以对匹配项进行自定义处理。回调接收匹配和子匹配作为参数,并且无论您的回调返回什么都将用作替换文本,因此您可以仅替换第二个子匹配上的空格。

演示:http: //jsfiddle.net/WVUYX/42/

于 2013-02-17T03:04:22.553 回答