Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript替换方法不工作。_Javascript_Jquery - Fatal编程技术网

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:

我将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: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写的东西和你拥有的东西之间的区别,即你使用的东西一个正则表达式文本(和转义特殊字符),而不仅仅是传递一个看起来像正则表达式的字符串