使用正则表达式拆分算术表达式

2023-12-04

我想拆分一个表达式,例如-1*-0.8/5-5 into [ '-1', '*', '-0.8', '/', '5', '-', '5' ]

[ '-1', '*', '-0.8', '/', '5-5' ]这就是我现在得到的expression.split(/([*/])/g);

对此有何建议?


这是一个解决方案。它正确检测到+, -, /, *并接受空格的使用:

([*\/]|\b\s*-|\b\s*\+)

var expression = "-1*-0.8/5-5";
console.log(expression.split(/([*\/]|\b\s*-|\b\s*\+)/g));

##regex101 演示


From 维克托的评论,这是接受括号的改进

var expression = "-1 * -0.8 / (5 - 5)";
console.log(expression.split(/([*\/()]|\b\s*[-+])/g));

##regex101 演示

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用正则表达式拆分算术表达式 的相关文章

随机推荐

  • 如何创建批处理文件来创建网页的快捷方式

    我想创建一个批处理文件 在桌面或开始菜单中创建快捷方式 该快捷方式需要打开一个网页 该网页是本地 Windows 服务器 IP 地址 例如 http 192 168 81 我还想为快捷方式提供自定义图像图标 我知道这是一个旧线程 但它是 G
  • 如何获取用户的国家信息

    基本上 我需要在应用程序启动时识别用户所在的国家 地区 并根据他 她的国家 地区在我的应用程序中启用或禁用基于位置的功能 我需要在加载 RootViewController 之前在应用程序委托中尽快执行此操作 无论如何 iPhone SDK
  • IE 的 Selenium WebDriver 错误

    我正在尝试使用 selenium webdriver junit 和 ant build 来自动化测试用例 从早上开始我就收到了奇怪的错误 测试用例包含按钮单击命令 测试在 Chrome 和 FF 上运行成功 但在 IE 上运行失败 早些时
  • 将自定义声明添加到 AspNetCore Azure 经过身份验证的应用程序

    我正在使用 AspNetCore 模板授权与这行代码 services AddAuthentication AzureADDefaults AuthenticationScheme AddAzureAD options gt Configu
  • 多对多关系对象上的 FluentNHibernate 查询

    由于某种原因 我无法正确执行此查询 而且我不明白为什么 我有一个名为 博客 的对象 它有一个 ID 和一个 标签 列表 每个 标签 都有一个 id 和一个 名称 属性 由于这是多对多关系 我有另一个名为 blog tags 的表来连接它们
  • 循环设置对选定的 Outlook 文件夹的监视

    我正在 Outlook 中的 VBA 中执行以下操作 将 Outlook 项目拖到指定文件夹后 我将此 Outlook 项目保存到我的计算机 即文件系统 Private WithEvents Items As Outlook Items P
  • 在 Freepascal 编译的 DLL 和 Delphi 编译的 EXE 之间交换字符串 (PChar)

    经过大量实验 我找到了一种将 FreePascal 编译的 DLL 中的 PChar 与 Delphi 编译的 EXE 交换的方法 我负责 DLL 和 EXE 源代码 但其中一个必须在 FreePascal 中 另一个在 Delphi 中
  • 创建平铺多维数组,同时删除 axis0 第 I 个索引的子元素?

    我试图平铺一个数组 其中每个索引都是多维的 然后我从每个索引中删除第 i 个子元素 例如 从这个数组开始 gt gt gt a np array 1 7 0 2 7 0 3 7 0 gt gt gt a np tile a a shape
  • 如何在 Perl 中对浮点数进行四舍五入?

    如何将小数 浮点 四舍五入到最接近的整数 e g 1 2 1 1 7 2 输出perldoc q round Does Perl have a round function What about ceil and floor Trig fu
  • JavaScript if 语法

    当我尝试运行简单的 if 语句时出现语法错误 中断此错误 左侧赋值无效 中断此错误 容器 我有什么问题 以及我如何制作 if this ewCount 0 then elseif NotDoneh 0 then ELSE 这是我当前的代码
  • 音频文件获取左/右声道

    经过大量研究 我找不到明确的答案 我想要实现的是 取一个mp3 wav文件并将其左右声道保存为2字节 然后我可以操作每个通道 然后再次将它们添加并创建一个新的 wav 文件 最好是Java的解决方案 相关问题是分割CHANNEL IN ST
  • 在 Fabric.js 中全屏显示画布

    我希望我的画布元素始终具有相同的大小 独立于客户端的屏幕分辨率 如果用户使用浏览器进行缩放 则画布元素应始终具有相同的大小 此外 纵横比应始终相同 我想要 1920 1080 点的坐标空间 如果浏览器没有相同的比例 则画布元素的侧面可能有边
  • 如何使用 date-fns 更正时区?

    网上看这个例子 https stackblitz com edit date fns playground zeitzonen file index ts gt 控制台输出 以下情况 时间为上午 11 54 Setup const date
  • pythonic 方法在没有索引变量的情况下执行 N 次某事? [复制]

    这个问题在这里已经有答案了 我有一些代码 例如 for i in range N do something 我想做某事N次 循环内的代码不依赖于i 是否可以在不创建无用的索引变量的情况下完成这个简单的任务 或者以其他更优雅的方式完成 如何
  • 迭代 list_iterator 两次[重复]

    这个问题在这里已经有答案了 我希望迭代 list iterator 两次 当我当前尝试执行此操作时 迭代器没有任何内容可在第二次迭代 我可以重置它吗 l iter 1 2 3 4 for i in l print i for i in l
  • Xamarin Forms Shell TitleView 不使图像居中

    我有一个在 Xamarin Forms 中使用新 Shell 的应用程序 我将以下代码添加到我的页面之一 试图使用 TitleView 区域居中显示我的应用程序标题图像 仅供参考 我已经尝试过居中对齐这两个选项 但没有什么区别
  • 为什么通过括号访问Symbol.iterator?

    例如 如果我创建了一个数组 var array 1 2 3 4 返回一个迭代器我会做var iterator array Symbol iterator 我不明白为什么你通过括号访问 Symbol iterator 属性 为什么不只是arr
  • Android Studio C++ NDK 库示例

    我想下载一些使用 C 或 C 的 Android Studio NDK 项目的工作示例 它将被编译为 so 库 或我可以从中提取 so 的 APK 我已经尝试过使用 Android mk 构建 ndkbuild 以及使用 CMakeList
  • gltf 光标侦听器 A 框架中的单击事件

    我无法弄清楚为什么游标侦听器适用于除我的 gltf 模型之外的所有实体 这是我的html div div
  • 使用正则表达式拆分算术表达式

    我想拆分一个表达式 例如 1 0 8 5 5 into 1 0 8 5 5 1 0 8 5 5 这就是我现在得到的expression split g 对此有何建议 这是一个解决方案 它正确检测到 并接受空格的使用 b s b s var