<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>New Document</TITLE>
  </script>
<script type="text/javascript">
function tt(){
var pattern=/^([a-zA-z]{1})([\w]*)$/g;
alert(pattern.test(document.getElementById("dd").value));
}
</script>
</HEAD> <BODY>
<input value="DDDDD" id="dd" onblur="tt()">
</BODY>
</HTML>
代码如上,用IE试验全返回true,用Mozzila就是一下true一下false。
费解- -!望高手指点,说下理由和解决办法!谢过
PS:去掉pattern后面那个g可以解决问题,但原因何在,有g如何解决。

解决方案 »

  1.   

    呵呵,楼主范错误了,test()方法只是用于检测(注意不是查找)一个字符串是否匹配某个模式.
    所以只要检测出来相匹配的模式,无论字符串里还剩余多少匹配的模式都返回的true,所以这里加g是多余的,也是不规范的测试方式.
    这种测试估计只有IE和safari之流的浏览器才会如楼主所愿啊,哈哈..
      

  2.   

    只要检测出来相匹配的模式,无论字符串里还剩余多少匹配的模式都返回的true
      

  3.   

    是的,只要有匹配就返回true,但是我不明白为什么在Mozzila里面测试时,一直true,false循环返回。
    我想知道的是在mozzila里面为什么不一直返回true。而且给定了值又没变过。你们可以复制代码用mozzila看看就知道效果了。