我要检查几个包含字母数字子字符串的字符串,并且可能在括号中包含一个列表,其中条目由"分隔:"
示例:
"this(is:an:example)"
"thisAsWell"
首先,我搜索alphasubstring和列表,然后我将列表分成一个数组。
.match(/([a-z]*)\((.*)\)/)
.spit(":")
适用于包含字母数字和列表的字符串,但如果缺少字符串则不行。
示例:
// .match(...)
"abc"
-> [ "abc" , null , null ]
"abc(1,2,3)"
-> [ "abc(1,2,3)" , "abc" , "1:2:3" ]
"(1:2:3)"
-> [ "(1:2:3)" , null , null ]
如何处理它最好,检查两个子串可选? 我想到了可能的回报:
"abc"
-> [ "abc" , "abc" , null ]
"abc(1,2,3)"
-> [ "abc(1,2,3)" , "abc" , "1:2:3" ]
"(1:2:3)"
-> [ "(1:2:3)" , null , "1:2:3" ]
如果可能的话,每个正则表达式都会分开列表。
答案 0 :(得分:1)
您可以选择使用这两个部分:
var re = /(?=.)([a-z]*)(?:\(([^)]*)\))?/
(?=.)
可以确保我们不匹配空输入。
<强>测试强>
abc".match(re)
["abc", "abc", undefined]
"abc(1,2,3)".match(re)
["abc(1,2,3)", "abc", "1,2,3"]
"(1,2,3)".match(re)
["(1,2,3)", "", "1,2,3"]
"".match(re)
null