使用正则表达式matchget-error无法读取属性“”;0”;从null

using regex match gets error cannot read property "0" from null

本文关键字:null 属性 读取 正则表达式 matchget-error      更新时间:2023-09-26

我试图编写一些代码,通过给定的分隔符将字符串拆分为一个数组,然后在该数组的每个元素上运行正则表达式匹配,以尝试提取相关数据。在下面的例子中,我希望在第一次循环时,我的TestString中会得到"8934",在最后一次循环时会得到"23423"。相反,我得到了一个错误: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);
}

如有任何帮助,我们将不胜感激。

谢谢,

保罗。

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

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

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

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);
    }
}