我写了一段正则
<html>
<body><script type="text/javascript">var cnText="朱?基";
cnText = cnText.replace(new RegExp("朱?基","g"),"ee");
alert(cnText);
</script>
</body>
</html>原意是想把"朱?基"替换成"ee"
但是显示的是“朱?ee”只把“基”换成了"ee".
怎么才能实现原意呀?先谢谢大家了。

解决方案 »

  1.   

    var cnText="朱?基";
    cnText = cnText.replace(new RegExp("朱\\?基","g"),"ee");alert(cnText);
      

  2.   

    new RegExp("朱?基","g")====替换 朱基 或者  为 ee
      

  3.   

    <script type="text/javascript">var cnText="朱?基";
    cnText = cnText.replace(new RegExp("朱\\?基","g"),"eee");
    alert(cnText);
    </script>
      

  4.   

    这样也行
    cnText = cnText.replace(new RegExp("朱.基","g"),"ee");
      

  5.   

    这样也可以
    <script type="text/javascript">var cnText="朱?基";
    re = /朱\?基/
    cnText = cnText.replace(re,"eee");
    alert(cnText);
    </script>
      

  6.   

    就直接输入全角个空格就行了。[ ],其实半角的也可以直接输入个空格的。\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 
      

  7.   

    献丑&“每天回帖即可获得10分可用分”。其实,LZ应举一反三,从中悟出正则元字符“?”还有一个内在的判断逻辑,也就是“不包括它之前的模式片段”,当与其它表达配合时。举个我早前在这给人写的正则例子:从字符串“[email protected],"小 ;明"<[email protected]>;错误;小雪<[email protected]>;wrong.com,"小, ;,王"<[email protected]>”中提取有效email地址和其余片段,要求把“"小, ;,王"<[email protected]>”这样引号内有逗号或者分号分隔的片段视为一个有效的email地址整体。正则式为:str.match(/("[^"]+"<)?[^,;]+/g),意思就是不包括“"[^"]+"<”这样模式结构里的其余片段中的“;”或“,”中断。首先来了个逻辑判断,很难有它法能如此简洁明了的搞定。