我尝试编写一些代码,通过给定的分隔符将字符串拆分为数组,然后对该数组的每个元素运行正则表达式匹配,以尝试提取相关数据。在下面的例子中,我希望在第一次循环循环时,我的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);
}
非常感谢任何帮助。
谢谢,
保罗。
答案 0 :(得分:0)
您使用空格分割字符串,并将拆分块提供给正则表达式。您不检查正则表达式是否与字符串匹配。但是,当正则表达式不匹配时,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);
}
}
&#13;