繁体   English   中英

如何使用正则表达式忽略字符串中的空格?

[英]How to ignore white space in string using regex?

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

 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"
    ]

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

你需要改变你的分割模式才能得到正确的 output:

 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(/',\s*'/) }) ); console.log(data);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM