Javascript RegExp在IE中不起作用

时间:2009-08-06 08:25:10

标签: javascript regex internet-explorer

参数 return_value 包含

   <textarea>{"id":43,"description":"","item_id":28,"callback":"addNewAttachment","filename":"foo.jpg",,"type":"posts","ext":"jpg","size":145}</textarea>

下一个代码删除了Firefox,Chrome中的 textarea 标签,因此可以在arr [1]中访问内容。在IE警报(“失败”)被调用。

function addAttachment(returned_value) {
    var re = new RegExp ("<textarea>(.+)</textarea>");      
    var arr = re.exec(returned_value);
    if(arr != null && arr.length > 1) {
        var json = eval('(' + arr[1] +')');
    } else {
        alert("Failure");           
    }   
    window[json.callback](json);
}

returned_value 来自ajax调用。我使用JQuery。

TEST

这也不起作用:

var re = new RegExp (/<textarea>(.+)<\/textarea>/);

问题在于IE正在将textarea字符串大写,而firefox则将其设为小写字母。

下一个正则表达式解决了它。

var re = new RegExp ('<textarea>(.+)</textarea)>','i');

3 个答案:

答案 0 :(得分:4)

这是一个区分大小写的问题吗? new RegExp(..., "i")可能有帮助吗?

答案 1 :(得分:4)

尝试使用正则表达式文字:

var r = /<textarea>(.+)<\/textarea>/i;

答案 2 :(得分:0)

你使用的是什么IE版本?我在IE 7中测试了以下代码并且工作正常:

<script>
var x = '<textarea>{"id":43,"description":"","item_id":28,"callback":"addNewAttachment","filename":"foo.jpg",,"type":"posts","ext":"jpg","size":145}</textarea>'

var r = new RegExp('<textarea>(.+)</textarea>');
var a = r.exec(x);
for (var i=1; i<a.length; i++)
    alert(a[i]);
</script>

编辑:我在IE7中使用此代码进行了检查,它也有效。 test.xml 是一个包含字符串的文件,位于带有脚本的HTML页面旁边的文件夹中。我认为它也适用于返回相同内容的动态页面。

<script>
function test(x) {
    var r = new RegExp("<textarea>(.+)</textarea>");
    var a = r.exec(x);
    for (var i=1; i<a.length; i++)
        alert(a[i]);
}

var rq = new XMLHttpRequest();
rq.open("GET", "test.xml", false);
rq.send(null);
test(rq.responseText)
</script>