javascript中的regex前瞻性出现问题



只有当所有空格分隔的单词都超过3个单词字符时,我才会尝试匹配(3个单词是必需的,abc*是正确的,但ab*不是)。这是我的测试:

<html>
        <body>
                <script>
                var re = /(?!(W|^)w{0,2}(W|$)).*/i;
                var texts = new Array("ab","ab*","abc de*", "ab* def");
                for (textindex in texts)
                {
                        var text = texts[textindex];
                        var matched = re.test(text);
                        document.write(matched + "<br/>")
                }
                </script>
        </body>
</html>

所有文本都匹配,但我认为没有一个文本应该匹配。也许我误解了前瞻性工作的一些基本原理。

测试的简单正则表达式是:

/^(s?S{3,})+$/

至于为什么你的正则表达式不起作用,你的否定展望只是意味着"在这个确切的点上不存在",所以无论你的输入是什么,你至少会在行的结尾得到匹配。

最新更新