繁体   English   中英

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

[英]JavaScript regex add space for each item in a string

我有这个正则表达式,它可以检测某些字符并在该字符之前或之后添加空格,以便可以使用.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", ")"]

暂无
暂无

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

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