我使用简单的RegExp表达式在括号内提取了一个字符串。我正在尝试将结果拆分为数组。
但我得到"Cannot read property 'split' of null" ERROR
。这很奇怪,因为vrb1
会返回(a, b)
。
我已尝试将vrb1
转换为toString()
的字符串,但它无效。
这个错误可能是因为RegExp匹配结果吗?非常感谢您的帮助。
str = sample(a, b);
var regex = new RegExp("[\(]([^\)])+[\)]","g");
var vrb1 = str.match(regex);
var tmp = vrb1.split(",");
return tmp;
答案 0 :(得分:3)
match
返回一个数组,而不是字符串。
返回值
array
包含整个匹配结果和任何括号捕获的匹配结果的数组,如果没有匹配则为null。
在您的情况下,您需要以下内容:
if (vrb1 !== null) {
var tmp = vrb1[0].split(',');
}
答案 1 :(得分:2)
match
将返回 null 。
你也需要检查一下null。
替换
var tmp = vrb1.split(",");
与
var tmp = vrb1 || [];
如果没有找到结果,这将返回一个空数组。
修改强>
您似乎正在进一步按comma
拆分结果,然后尝试
var tmp = vrb1 ? vrb1[0].split(",") : [];
或者因为有多个结果(正则表达式中为g
)
var tmp = vrb1 ? vrb1.join(",").split(",") : [];