如何匹配已知的XML标签?
问题描述:
我正在尝试构建一个xml文档中包含的url列表,其中我匹配<id>http://xxx.xxxx.com</id>
中的所有内容,并且遇到了问题。如何匹配已知的XML标签?
我试图与此模式匹配:/(?<id>)http://(.*?).com(?=</id>)/g
它适用于regexr.com,但我似乎无法得到它与我的jsfunction工作:
var regEx = new RegExp('/(?<id>)http://(.*?).com(?=</id>)/g');
我得到一个错误:
SyntaxError: Invalid regular expression: //(?<id>)http://(.*?).com(?=</id>)/g/: Invalid group
答
试试这个正则表达式:
(?!<id>)http:\/\/(.*?)\.com(?=<\/id>)
相反的:
(?<id>)http://(.*?).com(?=</id>)
看到演示的位置:http://regex101.com/r/xH8mH7
+1
这工作出色,谢谢! – fskirschbaum
答
尝试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浏览< = 8(Browser compatibility)
那你打算'(?...)'什么意思? –
我正在寻找匹配和 标签内的内容,这是本例中的url。它总是以http://开头,并以.com结尾,所以这种模式会匹配,但它不会在JS中为我工作,因为我收到我显示的错误。 –
fskirschbaum
我明白了。但是'(?...)'是无效的,所以我想知道你为什么使用这个字符序列('('后面跟着'?')。 –