正则表达式在两个字符串中获取字符串

时间:2013-11-12 08:35:45

标签: regex replace

我搜索了所有但却找不到任何东西。 我有:

[BBSHORTCODE_button align=none css=none000 color=#FFFFFF]CONTENT[/BBSHORTCODE_button]

我想删除字符串的第一部分和最后部分并获取

button align=none css=none000 color=#FFFFFF]CONTENT

我试过了:

string.replace(/\[BBSHORTCODE_([^\/]*)\]/g, function(d, c) {...}) 

它删除了我想要的第一部分和最后一个字符:]。因此,可以替换我的代码,以便删除最后一部分:[/BBSHORTCODE_button]

1 个答案:

答案 0 :(得分:0)

表示字符串

var s = "[BBSHORTCODE_button align=none css=none000 color=#FFFFFF]CONTENT[/BBSHORTCODE_button]";

你可以在字符串的每个边框上应用替换两次,你得到你想要的东西:

s = s.replace(/\[BBSHORTCODE_/g, '').replace('\[/BBSHORTCODE_button\]', '');

输出字符串是:

"button align=none css=none000 color=#FFFFFF]CONTENT"

第二个解决方案是使用match而不是replace,因此对于相同的字符串,以这种方式匹配:

s.match(/\[BBSHORTCODE_(.*)\[\/BBSHORTCODE_button\]/)[1];

请注意,匹配返回一个数组,其中您的所需结果位于第二个位置,这就是指令后面有[1]的原因。

更一般地说,如果你有另一个字符串,如:

l = "[BBSHORTCODE_something align=none css=none000 color=#FFFFFF]CONTENT[/BBSHORTCODE_something]";

以下列方式使用匹配:

l.match(/\[BBSHORTCODE_(.*)\[\/BBSHORTCODE_(.*)\]/)[1];

将返回所需的结果,据我所知:

 something align=none css=none000 color=#FFFFFF]CONTENT

这是一个完整的测试场景:

 var  l = "[BBSHORTCODE_something align=none css=none000 color=#FFFFFF]CONTENT[/BBSHORTCODE_something]";
 console.log(l.match(/\[BBSHORTCODE_(.*)\[\/BBSHORTCODE_(.*)\]/)[1]); 
希望这会有所帮助。