请大家看看下面的代码是怎么回事。<form name=form1>
字符串:<input name="t1" value="123456">
模式:/<input name="t2" value="^\d*$">/
</form>
<script language=javascript>
function c1()
{
re=new RegExp("^\d*$");
alert(re.test(123456));
}
c1();//false
function c2(form)
{
re=new RegExp(form.t2.value);
alert(re.test(form.t1.value));
}
c2(document.form1);//true
function c3()
{
var b="^\d*$";
re=new RegExp(b);
alert(re.test(123456));
}
c3();//false
//请大家仔细看看c2函数和c3函数到底有什么区别?
//为什么c2函数的结果为true而c3函数的结果为false
</script>

解决方案 »

  1.   


    function c2(form)
    {alert("可能是\d的原因,结果"+form.t2.value.length+"|"+"^\d*$".length+"|");
    re=new RegExp(form.t2.value);
    alert(re.test(form.t1.value));
    }
      

  2.   

    不是用"双引号吧,用/
    re=new RegExp(/^\d*$/);
    var b=/^\d*$/;
      

  3.   

    另外使用//和创建正则表达式对象式字符串的写法也不一样,
    这样
    function c3()
    {
    var b="^\\d*$";
    re=new RegExp(b);
    alert(re.test(123456));
    }
    才行
      

  4.   

    建议多看:EcmaScript正則表達式( 深入淺出系列之淺出 ^_^ )PDF下载:http://www.v-ec.com/dh20156/code/EcmaScriptRegExp.ppt
      

  5.   

    function c3()
    {
    var re=new RegExp(/^\d*$/);
    alert(re.test(123456));
    }
    c3();//true这样写就ok.
      

  6.   

    JavaScript权威指南貌似80块一本现在,一定要有的书。