JavaScript:替换字符串两边的字符

时间:2015-03-18 08:39:24

标签: javascript regex

我想要做的是匹配^^所包含的字符,并在保留字符串时替换^^。换句话说,转过来:

^^This is a test^^ this is ^^another test^^

进入这个:

<sc>This is a test</sc> this is <sc>another test</sc>

我得到正则表达式以匹配它们:

\^{2}[^^]+\^{2}

但我被困在那里。我不确定如何处理其他.replace参数:

.replace(/\^{2}[^^]+\^{2}/g, WHAT_TO_ADD_HERE?)

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

您可以使用替换为正则表达式和分组

var text = '^^This is a test^^ this is ^^another test^^'.replace(/\^\^(.*?)\^\^/g, '<sc>$1</sc>')

答案 1 :(得分:2)

以下是您可以使用的一段代码:

var re = /(\^{2})([^^]+)(\^{2})/g; 
var str = '^^This is a test^^ this is ^^another test^^\n\n<sc>This is a test</sc> this is <sc>another test</sc>';
var subst = '<sc>$2</sc>'; 

var result = str.replace(re, subst);

这只是我添加捕获组的正则表达式模式的增强。为了提高性能并确保您将捕获^^之间的所有符号,您只能使用一个捕获组和{em>非贪婪量化器的.符号:

var re = /\^{2}(.+?)\^{2}/g; 

查看the example

答案 2 :(得分:1)

在这种情况下,您需要使用组索引来包装内容。

var content  = "^^This is a test^^ this is ^^another test^^";

content.replace(/\^{2}(.*?)\^{2}/g, '<sc>$1</sc>');

(.*?)将帮助您对内容进行分组,并在您的替换语句中使用$ 1,其中1是组的索引。