拆分不在IE8中工作,但在FF和Chrome中工作

时间:2014-03-03 06:26:27

标签: javascript jquery regex

我想拆分以下字符串。

Ex: "Good Site" www.test.com

我想存储为

anchor text = Good Site
href = www.test.com

我试过下面的正则表达式进行拆分,但它在IE中不起作用。它在FF和Chrome中运行。

<!DOCTYPE html>
<html>
<body>

    <p id="demo">Click the button to display the array values after the split.</p>

    <button onclick="myFunction()">Try it</button>

<script>
    function myFunction()
   {
     var str = '"How are you doing today?" I am good';
     var res = str.split(/"(.*?)"/);
     document.getElementById("demo").innerHTML=res;
   }
</script>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

IE(Safari too iirc)在使用.split()时不会在结果数组中包含捕获的模式。那说,你应该使用匹配而不是拆分:

>> '"Good Site" www.test.com'.match(/^"([^"]+)"\s*(.*)/);

[""Good Site" www.test.com", "Good Site", "www.test.com"]

答案 1 :(得分:0)

你可以试试这个:

myFunction() {
   var str = '"Good Site" www.test.com';
   var res = str.split('"').splice(1); // outputs: Good Site, www.test.com
   var anchor = res[0]; // Good Site
   var href = res[1]; // www.test.com
   document.getElementById("demo").innerHTML = res;
}

当此代码仅使用此split() var res = str.split('"');执行时,输出将如下所示:

,Good Site, www.test.com

并且其长度为3,这不是必需的,这是由于'"'引号分隔,因此长度为3,所以我们必须.splice(1)删除数组中的空索引。

var res = str.split('"').splice(1);

所以它的输出和长度为2

Good Site, www.test.com

Fiddle