我想拆分以下字符串。
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>
答案 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