Javascript拆分字符串

Javascript split the string

本文关键字:字符串 拆分 Javascript      更新时间:2023-09-26

我有这样的字符串

"(length>10)&(length<100)"  

我想要这个

(,length,>,10,),&,(,length,<,100,)

是否可以使用javascript split和regex。

"(length>10)&(length<100)".split( /([()><&])/ ).filter( Boolean )
["(", "length", ">", "10", ")", "&", "(", "length", "<", "100", ")"]

这会在以下任一位置拆分:()><&("或"是由于周围的[])。

由于捕获(方括号周围的括号-虽然是ES5,所以IE8及以下版本不支持),所以可以保留拆分的字符。

最后,为了删除空字符串,我在数组上使用filter( Boolean )(ES5也是,IE8及以下版本也不支持)。

result = subject.split(/'b|(?!'w)/);

这在字母数字字符和非字母数字字符之间的边界处进行拆分,另外在两个非alnum字符之间进行拆分。您可能在字符串的开始/结束处得到一个空匹配,因此需要丢弃零长度的结果。

我会选择全局match,而不是split,它的行为更像一个标记器:

var input = "(length>10)&(length<100)";
var tokens = input.match(/'d+|[a-zA-Z]'w*|[()]|[<>=&|]+/g);

它扫描输入并匹配以下模式(按顺序):

'd+           # one ore more digits
|             # OR
[a-zA-Z]'w*   # an identifier
|             # OR
[()]          # a single opening- or closing parenthesis
|             # OR
[<>=&|]+      # one or more operators: '<=', '&', '|=', ...