我需要帮助JavaScript中的正则表达式(抱歉,我还在尝试学习它。)。
我有这个字符串:
all (any) -del
all -del (any)
all (any)
all -del
all
PS:all
,any
和del
可以包含任何值,包括空格。
我需要将每个字符串分开:
var1 = all
var2 = any (or null)
var3 = del (or null)
你能帮我解决这个问题吗?谢谢!
答案 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)"]