【问题标题】:How can I match between known XML tags?如何在已知的 XML 标记之间进行匹配?
【发布时间】:2014-04-18 17:45:52
【问题描述】:

我正在尝试构建一个包含在 xml 文档中的 url 列表,我在其中匹配 <id>http://xxx.xxxx.com</id> 中的所有内容,但我遇到了麻烦。

我正在尝试匹配此模式:/(?<id>)http://(.*?).com(?=</id>)/g

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

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

我收到一个错误:

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

【问题讨论】:

  • 你想(?...) 是什么意思?
  • 我正在寻找匹配 标签中的内容,在这种情况下是一个 url。它总是以 http:// 开头并以 .com 结尾,所以这个模式会匹配,但它在 JS 中对我不起作用,因为我收到了我显示的错误。
  • 我明白这一点。但是(?...)是无效的,所以我想知道你为什么使用这个字符序列((后跟?)。
  • @FelixKling:你打算写(?:<id>)吗?

标签: javascript xml regex lookahead negative-lookahead


【解决方案1】:

试试这个正则表达式:

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

代替:

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

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

【讨论】:

    【解决方案2】:

    试试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 Browser compatibility) 中不起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 2022-10-04
      相关资源
      最近更新 更多