Mis*_*ybe 0 javascript regex string
我正在制作一个角色计数器作为爱好代码.到目前为止,它正在运作,但我有一个小故障我似乎无法解决.当我写下" a,b,c"时,它会正确写入a:1 b:1 c:1.但是当我写" a,a,c,c"时,它只会写a:2.我不确定是什么问题.这是我的代码的JavaScript部分(myFunction由按钮激活,testinput.value是我正在使用的文本框的值):
function myFunction() {
var occurence = document.getElementById("testinput").value;
var cycleOne = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
"u", "v", "w", "x", "y", "z"
];
for (i = 0; i < 26; i++) {
var counter = new RegExp(cycleOne[i], 'g');
document.write(occurence.match(counter).length);
}
}
Run Code Online (Sandbox Code Playgroud)
它只是打印,2因为它在发生错误后立即失败.
让我们考虑输入的情况a,a,c,c.
在循环的第一次迭代中,您将匹配a,然后它找到两个匹配并打印它.
在第二次迭代中,您将匹配b并且它不在字符串中.所以occurence.match(counter)将返回null,你正试图从该length房产null.这就是它抛出错误的原因
TypeError:无法读取null的属性"length"
并停止执行.
要解决这个问题,你需要null在继续之前检查它是否是这样的
var result = occurence.match(new RegExp(cycleOne[i], 'g'));
if (result !== null) {
console.log(result.length);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |