JavaScript正则表达式为字符串中的每个项目添加空格

JavaScript regex add space for each item in a string

本文关键字:项目 添加 空格 正则表达式 字符串 JavaScript      更新时间:2023-09-26

我有这个正则表达式来检测某些字符并在该字符之前或之后添加空格,以便我可以使用 .split(" ") 将它们存储在数组中。这个正则表达式有简化的形式吗?

2

*5--4/2 = 2 * 5 - -4/2

(1+5)*2/1) = ( ( 1 + 5 ) * 2/1 )

var infix = $input.val()
                .replace(/('-'d+)(-)/g, "$1 $2 ")
                .replace(/('-)('-'d+)/g, " $1 $2")
                .replace(/([+/*^()])/g, " $1 ")
                .replace(/'s+/g, " ")

据我了解,您正在尝试添加空格,因此您可以拆分它们。相反。您可以使用保留拆分字符的 split 版本(通过将它们包含在一个组中)直接拆分为数组。对于拆分正则表达式,请指定数字序列(带有可选的前导减号),或者不指定任何内容。这将导致额外的空白字符串,因此请使用过滤器将其删除。

function split(s) {
  var number_or_nothing = /(-?['d.]+|)/;
  function non_empty(x) { return /'S/.test(x); }
  return s.split(number_or_nothing) . filter(non_empty);
}
> split("2*5--4/2")
< ["2", "*", "5", "-", "-4", "/", "2"]
> split("((1+5)*2/1)")
< ["(", "(", "1", "+", "5", ")", "*", "2", "/", "1", ")"]