如何在已知的XML标记之间进行匹配?

时间:2014-03-13 18:41:35

标签: javascript xml regex lookahead negative-lookahead

我正在尝试构建一个包含在xml文档中的网址列表,我在其中匹配<id>http://xxx.xxxx.com</id>内部的所有内容,并且我遇到了问题。

我试图匹配这种模式:/(?<id>)http://(.*?).com(?=</id>)/g

它适用于regexr.com,但我似乎无法使用我的jsfunction:

var regEx = new RegExp('/(?&lt;id>)http://(.*?).com(?=&lt;/id>)/g');

我收到错误:

  

SyntaxError:无效的正则表达式://(?<id>)http://(.*?).com(?=</id>)/g/:无效的群组

2 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

 (?!<id>)http:\/\/(.*?)\.com(?=<\/id>)

而不是:

 (?<id>)http://(.*?).com(?=</id>)

在此处查看演示:http://regex101.com/r/xH8mH7

答案 1 :(得分:1)

尝试DOMParser;

// Code tested under Firefox 27
var doc = new DOMParser()
    .parseFromString('<id>http://xxx.xxxx.com</id>', "application/xml");
var ids = doc.querySelectorAll('id'); // Return: NodeList[id]

然而,它在IE中并不起作用&lt; = 8(Browser compatibility