the result should be true, false (at least on IE6), because you are using /g option. The first re.test() matches the string, the second re.test() matches nothing, then the regular expression object resets, then it matches again, for example, try<script language="javascript"> var re=/^\w{2,10}$/g; alert(re.test("test")); alert(re.test("test")); alert(re.test("test")); </script> <script language="javascript"> var re=/^\w{2,10}$/g; alert(re.exec("test")); alert(re.exec("test")); alert(re.exec("test")); </script>remove the /g, you will get what you expected
<script language="javascript">
var re=/^[\w]{2,10}$/g;
alert(re.test("test"));
alert(re.test("test") && re.test("test"));
</script>
win2k server sp3, ie 6 sp1.
var re=/^\w{2,10}$/g;
alert(re.test("test"));
alert(re.test("test"));
alert(re.test("test"));
</script>
<script language="javascript">
var re=/^\w{2,10}$/g;
alert(re.exec("test"));
alert(re.exec("test"));
alert(re.exec("test"));
</script>remove the /g, you will get what you expected