str1="[aa22233]sdfsd67f54[bbb] " Function ReplaceQuestion1(QStr) Dim re Set re = new RegExp re.IgnoreCase = True re.Global = True re.Pattern = "\[.[^\]]*?\]" QStr = re.Replace(QStr,"") Set re = Nothing Set re = new RegExp re.IgnoreCase = True re.Global = True re.Pattern = "\d" Set Matches =re.Execute(QStr) Set re = Nothing For Each Match in Matches wstr=wstr&Match.Value Next ReplaceQuestion1= wstr End Function response.Write ReplaceQuestion1(str1)
var str='[aa22233]sdfsd67f54asd233[bbb]'; var tmp=str.match(/^\[.*?\](.*?)\[.*?\]$/); tmp=tmp[1].match(/\d+/g); for(i=0;i<tmp.length;i++){ alert(tmp[i]); }
var str ="[aa22233]sdfsd67f54[bbb]"; var str2="strResult.match(oReg2);" var strResult1="",strResult2=""; var oReg1=/^(\[.*?\])(.*?)(\[.*?\])$/gi; var oReg2=/\d+/gi; strResult1=str.replace(oReg1,"$2"); strResult2=str.replace(oReg1,"$2"); alert(strResult1.match(oReg2)); alert(strResult2.match(oReg2));
var ss ="[aa22233] 你好67的54[bbb]jj12[dfadf121]"; var rg = /\[(.*?)\]/g;//"[.*].*?(\d+)[.*]";var show = ss.replace(rg,""); show = show.match(/(?=[^\d]*)(\d+)/g)
str2="[aa22233]sdfsd67f54[bbb] " Function ReplaceQuestion2(QStr) Dim re Set re = new RegExp re.IgnoreCase = True re.Global = True re.Pattern = "\[.[\]]*?\]|[\d]" QStr = re.Replace(QStr,"*") ReplaceQuestion2= QStr End Function response.Write ReplaceQuestion2(str2)这个还没测试
[aa*****]sdfsd**.**f**[bbb] ,不对
//一次到位的替换不会,替换了3次..... var str="[aa22233]sdfsd67.22f54asd233[22bbb]"; var RegEp=/(\[[^\]]*\])/g; var Arr=new Array(); var m,Key=65; while((m=RegEp.exec(str))) { Arr.push({kw:String.fromCharCode(Key),value:m[1]}); str=str.replace(m[1],"$"+String.fromCharCode(Key)+"$") Key++; } RegEp=/(\d+\.?\d+)/g str=str.replace(RegEp,function($3){var str="";for(var i=0;i<$3.length;i++) str+="*"; return str;}); for(i=0;i<Arr.length;i++) { str=str.replace("$"+Arr[i].kw+"$",Arr[i].value); } alert(str)
var ss ="[aa222331] 你好67的54[bbb]jj12[dfadf121]"; var rg = /(?=[^\d]*)(\d+)/g;//"[.*].*?(\d+)[.*]"; //debugger;/\[(.*?)\]/g;// sss = ss.replace(/\[(.*?)\]/g,""); //alert( ss.match(rg,"g")); //alert(sss); //alert(sss.match(rg,"g")) var show = ss.replace(rg,function (a,b,c){ if(sss.match(rg,"g").input.indexOf(a)<0)return a; var ico=""; for(var i=0;i<a.length;i++) {ico+="*"} return ico; } ); alert(show)
var ss ="[aa22233] 你好67的54[bbb][aa22233]jj12[dfadf121]"; var re = /((?:\[[^\]]*\])?[^\[]*?)(\d+(?:\.\d+)?)/ig; ss = ss.replace(re,function(a,b,c){var arr = new Array(c.length+1);return b + arr.join("*");}); alert(ss);
<script> var str = "这个也要行[aa22233] 你好67的54[bbb]."; var newStr = ""; str.replace(/(\[.+?\])(.+?)(\[.+?\])/ig,function() { var arg = arguments; if(arg.length < 4)return; newStr = arg[1] + arg[2].replace(/\d/g,"*") + arg[3]; }); alert(newStr); </script>
<script> var str = "这个也要行[aa22233] 你好67的54[bbb]."; var newStr = ""; str.replace(/(\[.+?\])(.+?)(\[.+?\])/ig,function() { var arg = arguments; if(arg.length < 4)return; newStr = arg[1] + arg[2].replace(/\d/g,"*") + arg[3]; }); alert(newStr); </script>
不好意思. 上面把newStr没写成+=,改成+=就OK了.正确的如下:<script> var str = "[aa22233] 你好67的54[bbb][aa22233]jj12[dfadf121]"; var newStr = ""; str.replace(/(\[.+?\])(.+?)(\[.+?\])/ig,function() { var arg = arguments; if(arg.length < 4)return; newStr += arg[1] + arg[2].replace(/\d/g,"*") + arg[3]; }); alert(newStr); </script>
var ss ="[aa22233] 你好67的54111[bbb][aa22233]jj12[dfadf121]"; var re = /((?:\[[^\]]*\])?[^\[]*?)(\d*(?:\.\d+)?)/ig; ss = ss.replace(re,function(a,b,c){ var arr = new Array(c.length+1); return b + arr.join("*"); } ); alert(ss); 这样貌似就行了
//少了个?号 var ss ="[aa22233] 你好67.123的54[bbb][aa22233]jj12[dfadf121]"; var re = /((?:\[[^\]]*\])?[^\[]*?)(\d+(?:\.\d+)?)?/ig; ss = ss.replace(re,function(a,b,c){var arr = new Array(c.length+1);return b + arr.join("*");}); alert(ss);
晕~~ 居然把分都给抄我代码的人.每次都是这样... 走了离开CSDN这个伤心地.
没阿,老大你的代码我有改动: \d+(?: -> d*(?: 把+改成*了
对于用户来说需要的是最后的结果,不是过程。 TO gzdiablo :这也说明一点,你实力很强,但做事情不细。
Function ReplaceQuestion1(QStr)
Dim re
Set re = new RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "\[.[^\]]*?\]"
QStr = re.Replace(QStr,"")
Set re = Nothing
Set re = new RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "\d"
Set Matches =re.Execute(QStr)
Set re = Nothing
For Each Match in Matches
wstr=wstr&Match.Value
Next
ReplaceQuestion1= wstr
End Function
response.Write ReplaceQuestion1(str1)
var tmp=str.match(/^\[.*?\](.*?)\[.*?\]$/);
tmp=tmp[1].match(/\d+/g);
for(i=0;i<tmp.length;i++){
alert(tmp[i]);
}
var str2="strResult.match(oReg2);"
var strResult1="",strResult2="";
var oReg1=/^(\[.*?\])(.*?)(\[.*?\])$/gi;
var oReg2=/\d+/gi;
strResult1=str.replace(oReg1,"$2");
strResult2=str.replace(oReg1,"$2");
alert(strResult1.match(oReg2));
alert(strResult2.match(oReg2));
[aa22233]sdfsd67.22f54asd233[22bbb]得到 [aa22233]sdfsd*****f**[22bbb] ,就是不显示出数字,用×代替
(注意67.22变为*****)这点上面好像都不行。
var rg = /\[(.*?)\]/g;//"[.*].*?(\d+)[.*]";var show = ss.replace(rg,"");
show = show.match(/(?=[^\d]*)(\d+)/g)
Function ReplaceQuestion2(QStr)
Dim re
Set re = new RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "\[.[\]]*?\]|[\d]"
QStr = re.Replace(QStr,"*")
ReplaceQuestion2= QStr
End Function
response.Write ReplaceQuestion2(str2)这个还没测试
//一次到位的替换不会,替换了3次.....
var str="[aa22233]sdfsd67.22f54asd233[22bbb]";
var RegEp=/(\[[^\]]*\])/g;
var Arr=new Array();
var m,Key=65;
while((m=RegEp.exec(str)))
{
Arr.push({kw:String.fromCharCode(Key),value:m[1]});
str=str.replace(m[1],"$"+String.fromCharCode(Key)+"$")
Key++;
}
RegEp=/(\d+\.?\d+)/g
str=str.replace(RegEp,function($3){var str="";for(var i=0;i<$3.length;i++) str+="*"; return str;});
for(i=0;i<Arr.length;i++)
{
str=str.replace("$"+Arr[i].kw+"$",Arr[i].value);
}
alert(str)
var rg = /(?=[^\d]*)(\d+)/g;//"[.*].*?(\d+)[.*]";
//debugger;/\[(.*?)\]/g;//
sss = ss.replace(/\[(.*?)\]/g,"");
//alert( ss.match(rg,"g"));
//alert(sss);
//alert(sss.match(rg,"g"))
var show = ss.replace(rg,function (a,b,c){
if(sss.match(rg,"g").input.indexOf(a)<0)return a;
var ico="";
for(var i=0;i<a.length;i++)
{ico+="*"}
return ico;
}
);
alert(show)
var re = /((?:\[[^\]]*\])?[^\[]*?)(\d+(?:\.\d+)?)/ig;
ss = ss.replace(re,function(a,b,c){var arr = new Array(c.length+1);return b + arr.join("*");});
alert(ss);
var str = "这个也要行[aa22233] 你好67的54[bbb].";
var newStr = "";
str.replace(/(\[.+?\])(.+?)(\[.+?\])/ig,function()
{
var arg = arguments;
if(arg.length < 4)return;
newStr = arg[1] + arg[2].replace(/\d/g,"*") + arg[3];
});
alert(newStr);
</script>
<script>
var str = "这个也要行[aa22233] 你好67的54[bbb].";
var newStr = "";
str.replace(/(\[.+?\])(.+?)(\[.+?\])/ig,function()
{
var arg = arguments;
if(arg.length < 4)return;
newStr = arg[1] + arg[2].replace(/\d/g,"*") + arg[3];
});
alert(newStr);
</script>
var str = "[aa22233] 你好67的54[bbb][aa22233]jj12[dfadf121]";
var newStr = "";
str.replace(/(\[.+?\])(.+?)(\[.+?\])/ig,function()
{
var arg = arguments;
if(arg.length < 4)return;
newStr += arg[1] + arg[2].replace(/\d/g,"*") + arg[3];
});
alert(newStr);
</script>
var re = /((?:\[[^\]]*\])?[^\[]*?)(\d*(?:\.\d+)?)/ig;
ss = ss.replace(re,function(a,b,c){ var arr = new Array(c.length+1);
return b + arr.join("*");
}
);
alert(ss);
这样貌似就行了
//少了个?号
var ss ="[aa22233] 你好67.123的54[bbb][aa22233]jj12[dfadf121]";
var re = /((?:\[[^\]]*\])?[^\[]*?)(\d+(?:\.\d+)?)?/ig;
ss = ss.replace(re,function(a,b,c){var arr = new Array(c.length+1);return b + arr.join("*");});
alert(ss);
\d+(?: -> d*(?: 把+改成*了
对于用户来说需要的是最后的结果,不是过程。
TO gzdiablo :这也说明一点,你实力很强,但做事情不细。