Javascript拆分字符串

时间:2012-07-13 07:36:33

标签: javascript regex

我有这样的字符串

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

我想要这个

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

是否可以使用javascript split和regex。

3 个答案:

答案 0 :(得分:3)

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

["(", "length", ">", "10", ")", "&", "(", "length", "<", "100", ")"]

这可以分为:()><&(“或”归功于{{1}周围)。

保留分割字符是由于捕获(方括号周围的括号 - 虽然它是ES5,因此在IE8及以下版本中不受支持)。

最后,要删除空字符串,我在数组上使用[](也是ES5,在IE8及以下版本中也不支持)。

答案 1 :(得分:2)

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

这在字母数字和非字母数字字符之间的边界处分开,另外在两个非alnum字符之间。您可能会在字符串的开头/结尾处获得空匹配,因此您需要丢弃零长度结果。

答案 2 :(得分:0)

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

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: '<=', '&', '|=', ...