Javascript替换方法不工作。
我将XML存储在JavaScript变量中Javascript替换方法不工作。,javascript,jquery,Javascript,Jquery,我将XML存储在JavaScript变量中 <data> <event> <eid><![CDATA[152]]]]><![CDATA[></eid> <start_date><![CDATA[2014-03-01 00:00:00]]]]><![CDATA[></start_date> <end_date><![CDATA[2014-03-01 00:35:
<data>
<event>
<eid><![CDATA[152]]]]><![CDATA[></eid>
<start_date><![CDATA[2014-03-01 00:00:00]]]]><![CDATA[></start_date>
<end_date><![CDATA[2014-03-01 00:35:00]]]]><![CDATA[></end_date>
<text><![CDATA[New event]]]]><![CDATA[></text>
<rec_type><![CDATA[]]]]><![CDATA[></rec_type>
<event_pid><![CDATA[0]]]]><![CDATA[></event_pid>
<event_length><![CDATA[0]]]]><![CDATA[></event_length>
<event_type><![CDATA[0]]]]><![CDATA[></event_type>
<event_color><![CDATA[#664d0c]]]]><![CDATA[></event_color>
<userid><![CDATA[1]]]]><![CDATA[></userid>
<mediaid><![CDATA[65]]]]><![CDATA[></mediaid>
</event>
</data>
现在我想替换所有这样的实例
]]><![CDATA[
]>
从变量
我试过这个
{
var exp = "/]]><![CDATA[/gi";
alert(exp);
return exp;
}
xmldata = xmldata.replace(getExpReg(), "");
{
var exp=“/]]>使用简单的正则表达式,如
xmldata = xmldata.replace(/\]\]><!\[CDATA\[/gi, "");
xmldata=xmldata.replace(/\]\]>
在本例中,您是从getExpReg
方法返回一个字符串文字,因此replace方法将搜索与该字符串完全匹配的字符串,并替换它的第一个匹配项
如果要使用字符串文字作为正则表达式,则需要使用RegExp构造函数。replace接受字符串(精确匹配)或正则表达式对象(正则表达式匹配)。因此,如果要使用变量(或函数返回值)作为参数,则必须执行后一种操作
注意:第二个问题的原因是没有转义方括号。必须转义对正则表达式引擎有特殊意义的字符。方括号用于字符类,例如[0-9]
,以匹配数字0到9
function getExpReg()
{
var exp = new RegExp("\\]\\]><!\\[CDATA\\[","gi");
alert(exp);
return exp;
}
xmldata = xmldata.replace(getExpReg(), "");
函数getExpReg()
{
var exp=new RegExp(“\\]\\]>您没有转义特殊字符([
,/
)。应该是:
function getExpReg(){
var exp = /\/\]\]><!\[CDATA\[/gi; // escape using \
alert(exp);
return exp;
}
xmldata = xmldata.replace(getExpReg(), "");
函数getExpReg(){
var exp=/\/\]\]>为什么要替换我向其传递此XML的itcuz函数无法读取额外的CDATA字段,因为。replace
只接受静态字符串(精确匹配)或正则表达式对象。var exp=new RegExp(“”\]\]>reg也给出了错误,让我试试你的代码你想匹配]]>吗?你有一个i
gnore案例标志…我想OP想要i
gnorecase。请看他在第二个代码块中放的i
标志。你应该解释OP写的东西和你拥有的东西之间的区别,即你使用的东西一个正则表达式文本(和转义特殊字符),而不仅仅是传递一个看起来像正则表达式的字符串