<script language=javascript>
var ss="username password if else  end seLECT CASE DO WHILE NOT ORTHen end select case do whiLE NOTCASE DO WHILE NOt or"
var s="UserName|Password|If|Else|Then|End|Select|Case|Do|While|Not|Or"
var re=new RegExp("(?:("+s+"))","ig")
alert(ss.replace(re,function(a,b){return b.substr(0,1).toUpperCase()+b.substring(1).toLowerCase()}))

</script>

解决方案 »

  1.   

    谢谢
    hbhbhbhbhb1021(天外水火(我要多努力))
    基本上可以实现了,我也想到了这种方法,不过不会写。我现在的想法是:纯粹的替换,username 就替换成给定的UserName,而不仅仅是首字母大写。这个可以实现嘛?
      

  2.   

    还有怎么将
    var re=new RegExp("(?:("+s+"))","ig")
    写成
    var re=/s.source/gi;
    这样的形式,写来写去都不对,请高人指点。
      

  3.   

    <script language="JavaScript">
    <!--
    s="UserName|Password|If|Else|Then|End|Select|Case|Do|While|Not|Or";ss="username password if else  end seLECT CASE DO WHILE NOT ORTHen end select case do whiLE NOTCASE DO WHILE NOt or";ss = ss.replace(/(^|\s)(\w+?)(?=\s|$)/g,function(a,b,c){
        var ar = ("|"+s+"|").match(new RegExp("(\\|)" + c + "(?=(\\|))","gi"));
        if( ar ) return (b+ar[0].substring(1));
        else return a;
    });
    document.write(ss);
    //-->
    </script>
    对于用已有的变量创建正则表达式,不能使用/..../的方法,只能用构造器RegExp()和构造符new
      

  4.   

    谢谢
    zhaoxiaoyang(梅雪香@深圳) 
    ,结果中有这样的字符ORTHen,理想情况是OrThen,各位有空帮我想下,我也看看看能不能想出来,我先消化一下
      

  5.   

    ORTHen 算什么啊? 原串中也没有
    你的意思就是首字母大写吧,那就比较难了,不是用一个简单的正则可以处理的
    要考虑匹配原则问题
    如果你的s中有Nor,Or,R,Xor,Nnor,Nnnor,那没个匹配
    要是在ss中有个orororororor.....,还不把机器累死啊
      

  6.   

    <script language=javascript>
    var ss="username password if else  end seLECT CASE DO WHILE NOT ORTHen end select case do whiLE NOTCASE DO WHILE NOt or"
    var s="|UserName||Password||If||Else||Then||End||Select||Case||Do||While||Not||Or|";function mm(a, b)
    {
        var re = new RegExp("\\|("+ b +")\\|", "i");
        if(re.test(s)) return RegExp.$1;
        else return b;
    }
    var re = /\b(\w+)\b/g;
    ss = ss.replace(re, mm);
    alert(ss);
    </script>
      

  7.   

    汇总一下,慢慢研究<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <!--1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111-->
    <textarea name="textarea" cols="50" rows="10" onkeyup="a()"></textarea>
    <script language=javascript>
    function a()
    {
    var ss=event.srcElement.value;
    var s="|UserName|Password|If|Else|Then|End|Select|Case|Do|While|Not|Or|ElseIf|Call|";
    function mm(a, b)
    {
        var re = new RegExp("\\|("+ b +")\\|", "ig");
        if(re.test(s)) return RegExp.$1;
        else return b;
    }
    var re = /\b(\w+)\b/g;
    ss = ss.replace(re, mm);
    event.srcElement.value=ss;
    }
    </script>
    <!--1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111--><!--2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222-->
    <textarea name="textarea" cols="50" rows="10" onkeyup="a1()"></textarea>
    <script language=javascript>
    function a1()
    {
    var ss=event.srcElement.value
    var s="UserName|Password|If|Else|Then|End|Select|Case|Do|While|Not|Or"
    var re=new RegExp("(?:("+s+"))","ig")
    event.srcElement.value=ss.replace(re,function(a,b){return b.substr(0,1).toUpperCase()+b.substring(1).toLowerCase()})
    }
    </script>
    <!--2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222--><!--333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333-->
    <textarea name="textarea" cols="50" rows="10" onkeyup="a2()"></textarea>
    <script language=javascript>
    function a2()
    {
    s="UserName|Password|If|Else|Then|End|Select|Case|Do|While|Not|Or";
    ss=event.srcElement.value
    ss = ss.replace(/(^|\s)(\w+?)(?=\s|$)/g,function(a,b,c){
        var ar = ("|"+s+"|").match(new RegExp("(\\|)" + c + "(?=(\\|))","gi"));
        if( ar ) return (b+ar[0].substring(1));
        else return a;
    });
    event.srcElement.value=ss;
    }
    </script>
    <!--333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333-->
    测试,可以在文本框里输入字符看看效果"username password if else  end seLECT CASE DO WHILE NOT ORTHen end select case do whiLE NOTCASE DO WHILE NOt or"</body>
    </html>