只有当所有空格分隔的单词都超过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,})+$/
至于为什么你的正则表达式不起作用,你的否定展望只是意味着"在这个确切的点上不存在",所以无论你的输入是什么,你至少会在行的结尾得到匹配。