尝试在一场新比赛中使用匹配功能的结果时遇到问题。
这是代码:
<html>
<body>
<script type="text/javascript">
p="somelongtextmelongtextmelongtextmelongtext";
f1 = p.match(/some/g);
document.write(f1);
f2 = f1.match(/om/g);
document.write(f2);
</script>
</body>
</html>
当输出必须为“om”时,输出为“some”。我不明白这种行为,我需要在更复杂的情况下输出f1。
提前致谢。
答案 0 :(得分:6)
您确定粘贴的是与您正在测试的完全相同的代码吗?
我问因为f1 = p.match(/some/g);
返回一个匹配数组,而Array
对象没有.match
方法,所以f1.match(/om/g);
会抛出错误。
无论如何,正确的方法是:
p="somelongtextmelongtextmelongtextmelongtext";
f1 = p.match(/some/g);
if (f1) {
f2 = f1[0].match(/om/g);
console.log(f2);
}
答案 1 :(得分:0)
输出为“some”,因为它在行上失败:f2 = f1.match(/ om / g);它永远不会写f2。
f1是一个对象变量,而不是一个字符串。该对象没有匹配方法。用以下方法替换违规行:
f2 = f1.toString()。match(/ om / g);
HTH