gpt4 book ai didi

javascript - 正则表达式:Javascript、XML、字符串

转载 作者:行者123 更新时间:2023-11-28 16:50:42 24 4
gpt4 key购买 nike

我的变量中有以下数据。

<ctx>
<PostCode>XXXXXX</PostCode>
<Title1>Mr</Title1>
<Name>John</Name>
<Order1>£100.00</Order1>
<Order2>£100.01</Order2>
<Date>10/10/2010</Date
</ctx>

使用以下正则表达式var payload = ctx.toString().match(/Order[1-9]/g);我得到以下结果

Order1,Order1,Order2,Order2

如何让它停止在 Order1、Order2 处,因为正在计算第二个结束标记,而且我也不能使用 <Order[1-9]> (开始标签)因为我的应用程序不允许我捕获标签 <>基本上是一个返回唯一值的正则表达式。

所以下面的正则表达式似乎在某种程度上有效。 (Order[0-9])(?!.*\1) (Order[0-9])(?!.*\1)

https://regex101.com/r/6QhFBg/1

最佳答案

切勿使用正则表达式解析 XML。错误的工具会导致脆弱的解决方案。

相反,请使用真正的 XML 解析器或 XPath。

例如这个XPath,

//*[starts-with(local-name(), 'Order')]

将稳健地选择名称以“Order”开头的所有元素。

在浏览器中的 JavaScript 中,XPath 表达式通过 document.evaluate 求值:

var orders = document.evaluate('//Order[starts-with(local-name(), 'Order')]', document, 
null, XPathResult.ANY_TYPE, null );
var thisOrder = orders.iterateNext();

while (thisOrder) {
console.log(thisOrder.textContent);
thisOrder = orders.iterateNext();
}

另请参阅How to use document.evaluate() and XPath to get a list of elements?

要解析存储在字符串中的 XML,请参阅示例:

关于javascript - 正则表达式:Javascript、XML、字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com