<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>
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>
hbhbhbhbhb1021(天外水火(我要多努力))
基本上可以实现了,我也想到了这种方法,不过不会写。我现在的想法是:纯粹的替换,username 就替换成给定的UserName,而不仅仅是首字母大写。这个可以实现嘛?
var re=new RegExp("(?:("+s+"))","ig")
写成
var re=/s.source/gi;
这样的形式,写来写去都不对,请高人指点。
<!--
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
zhaoxiaoyang(梅雪香@深圳)
,结果中有这样的字符ORTHen,理想情况是OrThen,各位有空帮我想下,我也看看看能不能想出来,我先消化一下
你的意思就是首字母大写吧,那就比较难了,不是用一个简单的正则可以处理的
要考虑匹配原则问题
如果你的s中有Nor,Or,R,Xor,Nnor,Nnnor,那没个匹配
要是在ss中有个orororororor.....,还不把机器累死啊
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>
<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>