在javascript中使用REGEX拆分字符串

时间:2014-09-11 09:39:33

标签: javascript regex parsing split

我试图将字符串分解为5个部分。例如:

var str1 = '#<SYSTEM list-of / asdf-finalizers-20140826-git / quicklisp 2014-08-26>'

// filter is used to remove empty strings from the returned array
str1.split(/[ #<>/]/).filter(function(n) { return n !== ''; });

// str1[0] -> SYSTEM
// str1[1] -> list-of
// str1[2] -> asdf-finalizers-20140826-git
// str2[3] -> quicklisp
// str2[3] -> 2014-08-26


但问题是,我无法在单词中间解析包含斜杠的字符串,例如,

#<SYSTEM asdf-finalizers-test/1 / asdf-finalizers-20140826-git / quicklisp 2014-08-26>

解析单词asdf-finalizers-test/1的正确正则表达式是什么?我试过这些但失败了。

/[(\s\/\s) #<>]//[(?:\s\/\s) #<>]//[ #<>]|(\s\/\s)/

2 个答案:

答案 0 :(得分:2)

以下似乎有效:

/ \/ |[ #<>]/

'#<SYSTEM asdf-finalizers-test/1 / asdf-finalizers-20140826-git / quicklisp 2014-08-26>'.split(/ \/ |[ #<>]/).filter(Boolean)
> [ 'SYSTEM',
    'asdf-finalizers-test/1',
    'asdf-finalizers-20140826-git',
    'quicklisp',
    '2014-08-26' ]

答案 1 :(得分:1)

如果后跟单词字符,您可以使用否定前瞻来根据/进行拆分。

> var s = "#<SYSTEM asdf-finalizers-test/1 / asdf-finalizers-20140826-git / quicklisp 2014-08-26>"
> s.split(/[ #<>]|\/(?!\w)/).filter(function(n) { return n !== ''; });
[ 'SYSTEM',
  'asdf-finalizers-test/1',
  'asdf-finalizers-20140826-git',
  'quicklisp',
  '2014-08-26' ]