使用正则表达式匹配获取错误无法从null读取属性“0”

时间:2016-04-12 22:23:34

标签: javascript regex match

我尝试编写一些代码,通过给定的分隔符将字符串拆分为数组,然后对该数组的每个元素运行正则表达式匹配,以尝试提取相关数据。在下面的例子中,我希望在第一次循环循环时,我的TestString和最后一轮“23423”会得到“8934”。相反,我得到一个错误说明:TypeError:无法从null(#6)读取属性“0”。

var myStr = "H$ello8934 My23 Name1 Is76 Frank789 $ello23423";
var myArray = myStr.split(" ");
for(i = 0, l = myArray.length; i < l; ++i) {
    var testRegex = /\$ello(\d+)/;
    var testGet = myArray[i].match(testRegex);
    var TestString = testGet[0];
    alert(TestString);
}

非常感谢任何帮助。

谢谢,

保罗。

1 个答案:

答案 0 :(得分:0)

您使用空格分割字符串,并将拆分块提供给正则表达式。您不检查正则表达式是否与字符串匹配。但是,当正则表达式不匹配时,String#match的结果为 null

代码检查H$ello8934并返回匹配项,然后找到My23,但找不到匹配项,并返回错误。

检查正则表达式是否找到匹配项:

&#13;
&#13;
var myStr = "H$ello8934 My23 Name1 Is76 Frank789 $ello23423";
var myArray = myStr.split(" ");
for(i = 0, l = myArray.length; i < l; ++i) {
    var testRegex = /\$ello(\d+)/;
    var testGet = myArray[i].match(testRegex);
    if (testGet) {
    	var TestString = testGet[0];
    	alert(TestString);
    }
}
&#13;
&#13;
&#13;