JavaScript中的重复匹配

时间:2011-07-13 19:04:16

标签: javascript match

尝试在一场新比赛中使用匹配功能的结果时遇到问题。

这是代码:

<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。

提前致谢。

2 个答案:

答案 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