我的一段代码
var anstr=sensitiveWord[s]; //从数据度的字符串如:老???师
    var str="";
        for(var zz=0; zz<anstr.length; zz++)
        {             if (anstr[zz] == "?" || anstr[zz] == "?")
                    {
                    str=str + "[\\s\\S]";
                    }
                    else
                    {
                    str=str + anstr[zz];
                    }
    }
                    var anreg="/" + str + "/ig";
                    var arr = cnText.match(eval(anreg)); //cnText是输入的字符串如:“老阿道夫师”  或者“老   师”
现在就是第一个能匹配出来,但是“老   师”匹配不出
但是当我从数据库读的是“老?师”,则“老 师”匹配的出。

解决方案 »

  1.   

    var arr = cnText.match(eval(anreg)); //cnText是输入的字符串如:“老阿道夫师” 或者“老 师”(老与师之间3个空格)
    现在就是第一个能匹配出来,但是“老 师”匹配不出
    但是当我从数据库读的是“老?师”,则“老 师”(老与师之间1个空格)匹配的出。
      

  2.   

    var anstr = "老???师"
    var str=anstr.replace(/[??]+/ig, '[\\s\\S]*')var anreg="/" + str + "/ig";
    var cnText = "老 师"
    var arr = cnText.match(eval(anreg)); //cnText是输入的字符串如:“” 或者“老 师”
    alert(arr)
      

  3.   

    <script type="text/javascript">
    var anstr="老???师"; //从数据度的字符串如:老???师
    var str=anstr.replace(/[?|?]*/g,"");
    var anreg="/" + str.split("").join("|") + "/ig";
    var arr = "老 师".match(eval(anreg)); 
    alert(arr.join(""));
    </script>
      

  4.   

    //var anstr=sensitiveWord[s]; //从数据度的字符串如:老???师
    var anstr = "老???师"
    var str=anstr.replace(/[??]/g, '[\\s\\S]')var anreg="/" + str + "/ig";
    var cnText = "...老   师...老阿道夫师..."
    var arr = cnText.match(eval(anreg)); //cnText是输入的字符串如:“” 或者“老 师”
    alert(arr)
      

  5.   

    谢谢你啊,我找到原因了,我之前的代码也可以用,不过你的更加方便简单,错误原因是我的cnText不是“老   师”(老与师之间3个空)而是“老 &nbsp 师”。