You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则提取数组特定值?Cypress E2E测试场景

解决Cypress E2E测试中站点地图URL的正则过滤问题

需求1:提取从/flux/sitemaps/开始的完整路径

针对原URL数组,可通过正则匹配保留/flux/sitemaps/及其后续内容,实现代码如下:

const originalUrls = [
  "https://xxxxxxxxx.com/flux/sitemaps/sitemap_cms_1.xml",
  "https://xxxxxx.com/flux/sitemaps/sitemap_category_1.xml"
];

// 方法1:使用match提取目标片段
const filteredPaths = originalUrls.map(url => {
  // 匹配从/flux/sitemaps/到.xml结尾的完整路径
  const matchResult = url.match(/\/flux\/sitemaps\/.*\.xml$/);
  // 匹配成功返回结果,失败可按需保留原URL
  return matchResult ? matchResult[0] : url;
});

// 方法2:使用replace替换掉前置无关内容
const filteredPathsAlt = originalUrls.map(url => 
  url.replace(/^.*(?=\/flux\/sitemaps\/)/, '')
);

正则说明

  • /\/flux\/sitemaps\/.*\.xml$/:精准匹配以/flux/sitemaps/开头、.xml结尾的路径片段,确保只提取有效站点地图路径
  • /^.*(?=\/flux\/sitemaps\/)/:匹配/flux/sitemaps/之前的所有内容(含域名),通过替换为空保留目标路径

需求2:仅提取.xml文件名

如果只需要最后的文件名部分,可使用以下代码:

const originalUrls = [
  "https://xxxxxxxxx.com/flux/sitemaps/sitemap_cms_1.xml",
  "https://xxxxxx.com/flux/sitemaps/sitemap_category_1.xml"
];

const filteredFilenames = originalUrls.map(url => {
  // 匹配最后一个斜杠后的.xml文件名
  const matchResult = url.match(/[^\/]+\.xml$/);
  return matchResult ? matchResult[0] : url;
});

正则说明

  • /[^\/]+\.xml$/:[^\/]+匹配任意非斜杠字符(即最后一个斜杠后的内容),结合\.xml$确保只提取以.xml结尾的文件名

在Cypress中的实际应用示例

结合E2E测试场景,对比预生产与生产环境的站点地图内容:

// 预生产环境获取并处理站点地图列表
cy.request('https://pre-prod.example.com/flux/sitemaps/index.xml')
  .then(res => {
    // 解析XML得到URL数组(可使用Cypress自带或第三方XML解析工具)
    const preProdUrls = parseXmlToUrls(res.body);
    const preProdSitemaps = preProdUrls.map(url => url.match(/[^\/]+\.xml$/)[0]);
    cy.wrap(preProdSitemaps).as('preProdSitemaps');
  });

// 生产环境获取并对比
cy.request('https://prod.example.com/flux/sitemaps/index.xml')
  .then(res => {
    const prodUrls = parseXmlToUrls(res.body);
    const prodSitemaps = prodUrls.map(url => url.match(/[^\/]+\.xml$/)[0]);
    cy.get('@preProdSitemaps').then(preProd => {
      // 深度对比两个环境的站点地图文件名是否一致
      expect(prodSitemaps).to.deep.equal(preProd);
    });
  });

内容的提问来源于stack exchange,提问作者user3095223

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:35:17