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

如何从字符串中提取带空格的参数比较表达式?

解决方案

你的问题出在正则表达式的开头部分——[a-z0-9\s]+会匹配包含空格的任意字母数字组合,导致把前面的AND 这类无关内容也包含进去。要精准提取{参数}{运算符}{参数}格式的表达式,需要明确各部分的规则:

  • 参数名:以字母/数字开头的标识符(无前置空格),用[A-Za-z0-9]+匹配
  • 运算符:支持==、>=、<=、!=、>、<,注意把多字符运算符放在前面(避免单字符运算符被优先匹配)
  • 参数值:这里是数字,用\d+匹配
  • 运算符前后的空格是可选的,用\s*匹配

修正后的代码如下:

let myString = '(A == 3 AND B == 4) OR ( A==1 AND B==2)';
const result = myString.match(/[A-Za-z0-9]+\s*(==|>=|<=|!=|>|<)\s*\d+/gi);  
console.log(result); // 输出: ["A == 3", "B == 4", "A==1", "B==2"]

如果你的参数值可能包含非数字(比如字符串),可以把\d+替换为\S+(匹配任意非空白字符),但根据你的示例,当前正则已经满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:36:19