将Javascript正则表达式结果转换为字符串(?)

时间:2016-05-03 07:08:00

标签: javascript regex

我使用简单的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;

2 个答案:

答案 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(",") : [];