2016-10-10 117 views
0

我用reactjs创建了网站。对于restAPI的我使用java和CMS是liferay。在liferay我创造了手风琴的短码,如如何在JavaScript中替换多次出现的字符串?

('[accordion][acc-header]Heading 1[/acc-header][acc-content]Content1[/acc-content][acc-header]Heading 2[/acc-header][acc-content]Content2[/acc-content][/accordion]')

我想替换html元素而不是这个字符串。如何在JavaScript中做?

在这里你去,

[accordion] 
[acc-header]Heading 1[/acc-header][acc-content]Content1[/acc-content] 
[acc-header]Heading 2[/acc-header][acc-content]Content2[/acc-content]  
[/accordion] 

HTML输出,

<div class="accordion"> 
    <h3>Heading1</h3> 
    <div class="accordion-content"> 
    content 1 
    </div> 
<h3>Heading2</h3> 
    <div class="accordion-content"> 
    content 2 
    </div> 
</div> 
+0

什么是所需的HTML输出? –

+0

@TomFenech,我编辑了我的问题。你可以请现在检查吗? – Sathya

回答

2

脏,快捷的方式:

var s = '[accordion][acc-header]Heading 1[/acc-header][acc-content]Content1[/acc-content][acc-header]Heading 2[/acc-header][acc-content]Content2[/acc-content][/accordion]'; 
s.replace(/\[([a-z\-]+)]/g, '<div class="$1">').replace(/\[\/[a-z\-]*]/g, '</div>') 

结果是:

"<div class="accordion"><div class="acc-header">Heading 1</div><div class="acc-content">Content1</div><div class="acc-header">Heading 2</div><div class="acc-content">Content2</div></div>" 

这不会添加<h3>标签

+0

我编辑了我的问题 – Sathya

+0

这是不公平=)添加了一个编辑,但这不是一个完整的解决方案 – k102

相关问题