【问题标题】:How do I parse names out of HTML in JavaScript?如何在 JavaScript 中从 HTML 中解析名称?
【发布时间】:2012-03-22 08:35:27
【问题描述】:

我有一个javascript变量,例如:

var s = "<result>Success</result><name>George</name>";

如何使用 javascript 正则表达式获得结果“Success”并命名为“George”?

【问题讨论】:

  • 您遇到了什么问题?斜线?您可以使用\/ 对其进行转义,或者简单地使用. 匹配任何字符。
  • @KilianFoth 你能给我看一个真实的例子吗?我对正则表达式不实用:/
  • 这个例子是你的字符串的典型例子,还是你实际上在谈论更复杂的数据结构?
  • @amnotiam 是的,这是我的字符串或更好的字符串:“[result]Success[/result][name]George[/name]”我需要得到 'Success' 和 'George'

标签: javascript regex


【解决方案1】:

您不应将正则表达式与 XML 一起使用。使用xml解析器http://www.w3schools.com/xml/xml_parser.asp

【讨论】:

  • 这是一个例子,同样的字符串可以是: var s = "[result]Success[/result][name]George[/name]";我该怎么办?
  • 如果这是真的,你需要解决你的一致性问题......并尝试保持一个标准。
  • 这是典型的堆栈溢出答案的一个很好的例子,它并没有真正回答问题
  • @kelloti 好吧,你也应该回答 [result]Success[/result][name]George[/name] 的问题,因为 SuccessGeorge 是一个“例子”
  • 如果您注意到,他的示例实际上不会在 XML 解析器中工作,因为没有父标记。因此,为什么我给了他他的正则表达式答案。但我仍然同意,尽可能尝试使用 XML 解析器,所以我也向他指出了这一点。
【解决方案2】:

您正在寻找的正则表达式是

var result = s.replace(/.*<result>([^<]*)<\/result>.*/, "$1");
var name = s.replace(/.*<name>([^<]*)<\/name>.*/, "$1");

但是,作为一般经验法则 - 永远不要使用正则表达式来解析 HTML。原因是浏览器已经内置了 XML 解析器,为什么要使用丑陋的正则表达式来做浏览器已经做的事情呢?

解析 XML: http://www.switchonthecode.com/tutorials/xml-parsing-with-jquery

使用 DOM 解析 HTML:How to parse HTML from JavaScript in Firefox?

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 2010-10-27
    • 2010-12-06
    • 2012-08-30
    • 2014-11-17
    • 2019-04-29
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多