【问题标题】:How to ignore white space in string using regex?如何使用正则表达式忽略字符串中的空格?
【发布时间】:2022-11-30 15:03:01
【问题描述】:

我有一个查询字符串,我解析它并形成对象数组,例如,

const regex = /((?:\bNOT\s+)?\w+)\s+IN\s+\('([^()]*)'\)/g;
const string = "DEVICE_SIZE IN ('036','048', '060','070') AND DEVICE_VOLTAGE IN ('1','3') AND NOT DEVICE_DISCHARGE_AIR IN ('S') AND NOT DEVICE_REFRIGERANT_CIRCUIT IN ('H', 'C')";
const data = Array.from(
  string.matchAll(regex), m =>
  ({
    [m[1]]: m[2].split("','")
  })
);
console.log(data);

这里('036','048', '060','070')060之前有一个额外的空格,所以形成的数组看起来像,

"DEVICE_SIZE": [
      "036",
      "048', '060",
      "070"
    ]

预期结果

"DEVICE_SIZE": [
      "036",
      "048", 
      "060",
      "070"
    ]

请帮助我忽略任何字符串之前的所有空格。

【问题讨论】:

  • 怎么样:[m[1]]: m[2].replace(/\ /g, "").split("','")

标签: javascript regex


【解决方案1】:

您需要更改拆分模式以获得正确的输出:

const regex = /((?:NOTs+)?w+)s+INs+('([^()]*)')/g;
const string = "DEVICE_SIZE IN ('036','048', '060','070') AND DEVICE_VOLTAGE IN ('1','3') AND NOT DEVICE_DISCHARGE_AIR IN ('S') AND NOT DEVICE_REFRIGERANT_CIRCUIT IN ('H', 'C')";
const data = Array.from(
  string.matchAll(regex), m =>
  ({
    [m[1]]: m[2].split(/',s*'/)
  })
);
console.log(data);

正则表达式模式 /',s*'/ 将匹配结束 ' 和逗号后跟 0 个或多个空格,然后打开 ',这会从生成的 split 数组中删除空格。

【讨论】:

    猜你喜欢
    • 2011-06-03
    • 1970-01-01
    • 2021-09-13
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多