1

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

[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]

4

1 回答 1

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"

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

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

请注意, match 返回一个数组,其中您想要的结果位于第二个位置,这就是指令后面有 [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]); 

希望这可以帮助。

于 2013-11-12T08:51:54.000 回答