在JavaScript中分解字符串有三个部分

时间:2012-03-19 02:16:28

标签: javascript regex split

  

可能重复:
  JavaScript RegExp Three Parts

我需要帮助JavaScript中的正则表达式(抱歉,我还在尝试学习它。)。

我有这个字符串:

all (any) -del
all -del (any)
all (any)
all -del
all

PS:allanydel可以包含任何值,包括空格。

我需要将每个字符串分开:

var1 = all
var2 = any (or null)
var3 = del (or null)

你能帮我解决这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

怎么样:

/^(.*?)\s?(\(.*?\)|)\s?(-.*?|)$/

应用到您的示例:

'all (any) -del'.match(/^(.*?)\s?(\(.*?\)|)\s?(-.*?|)$/)
["all (any) -del", "all", "(any)", "-del"]

'all (any)'.match(/^(.*?)\s?(\(.*?\)|)\s?(-.*?|)$/)
["all (any)", "all", "(any)", ""]

'all -del'.match(/^(.*?)\s?(\(.*?\)|)\s?(-.*?|)$/)
["all -del", "all", "", "-del"]

'all'.match(/^(.*?)\s?(\(.*?\)|)\s?(-.*?|)$/)
["all", "all", "", ""]

要处理新要求,有点复杂:

'all (any) -del'.match(/^(.*?)(?:\s?(\([^-]*\)|)\s?(-[^()]*|)|\s?(-[^()]*|)\s?(\([^-]*\)|))$/)
["all (any) -del", "all", "(any)", "-del", undefined, undefined]
'all -del (any)'.match(/^(.*?)(?:\s?(\([^-]*\)|)\s?(-[^()]*|)|\s?(-[^()]*|)\s?(\([^-]*\)|))$/)
["all -del (any)", "all", undefined, undefined, "-del ", "(any)"]