那咱就把那个技术给详细点... 哈哈, 1. str.replace() 替换详细 <script type="text/javascript"> //<![CDATA[ var temp = ''; var num=1; var num_=1; var ='#'; var _ar=['a', 'b', 'c', 'b', 'a', 'e', 'c', 'ab'].join(); ///.*?\$|.*?$/g var _re=new RegExp('.*?'+.replace(/(.)/g,'\\$1')+'|.*?$','g'); var _re_=new RegExp(.replace(/(.)/g,'\\$1')+'$');
var str1=['中国','国度','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','中国','中国','中国','国度','国度','北京','广东','国度','广东']
//var str2=[中国,国度,广东,北京] var str2=['北京', '国度', '中国', '广东']
function fDelRddcAr (_ar, _order, _num){ var temp = ''; var ='$$#@$%$%#'; _ar=_ar.join(); ///.*?\$|.*?$/g var _re=new RegExp('.*?'+.replace(/(.)/g,'\\$1')+'|.*?$','g'); var _re_=new RegExp(.replace(/(.)/g,'\\$1')+'$');
<!--
var str = "1:2,1:3,1:4,1:5,2:3,2:4,3:5,1:2,1:4,2:3,1:2,1:3,1:2,12:1,12:21,12:1,102:1,102:130,102:1";
var strDelSame = "";
str.replace(/\d+:\d+[\,|$]/g,function(){
if(strDelSame.indexOf(arguments[0]) == -1)
strDelSame += arguments[0];
});
document.write(strDelSame);
//-->
</script>我上次不是回过你了,我的代码就可以啊.你还想咋地?
忽忽。。看我们敬爱的zhaoxiaoyang(梅雪香@深圳)大哥怒了不是?
不过zhaoxiaoyang(梅雪香@深圳)大哥的代码存在着小问题。
不如你输出下match就知道啦。。最后一个内容没有找到。而且还有可能出现一种情况。
比如
101:20,1:20,1:40
这个里面有两种可能一是indexOf搜索的时候会出现101:20,包括1:20,
还有那个那个正则没有找到1:40
我修改了下zhaoxiaoyang(梅雪香@深圳)大哥的式子
还学习到了东西忽忽。。不错的样子
开个帖子给zhaoxiaoyang(梅雪香@深圳)散分,表示感谢
<script type="text/javascript">
//<![CDATA[
var temp = '';
var num=1;
var num_=1;
var ='#';
var _ar=['a', 'b', 'c', 'b', 'a', 'e', 'c', 'ab'].join(); ///.*?\$|.*?$/g
var _re=new RegExp('.*?'+.replace(/(.)/g,'\\$1')+'|.*?$','g');
var _re_=new RegExp(.replace(/(.)/g,'\\$1')+'$');
_ar.replace(_re,function(){
if(temp.indexOf(arguments[0]) == -1) temp += arguments[0];
for(var i=0; i<arguments.length; num++, i++){
document.write(num, ' ',num_,'.',i, '. ', arguments[i],'<br/>');
}
document.write('<p/>');
num_++
}
);
document.write(temp.split(),'<br/>');
//]]>
</script>4.1.2 数组操作 2
<script type="text/javascript">
//<![CDATA[
var str='1:2,1:3,1:4,1:5,2:3,2:4,3:5,1:2,1:4,2:3,1:2,1:3,1:2,1:3,1:4';
var str=str.split(',');
var str1=['中国','国度','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','广东','北京','中国','中国','中国','中国','国度','国度','北京','广东','国度','广东']
//var str2=[中国,国度,广东,北京]
var str2=['北京', '国度', '中国', '广东']
document.write(fDelRddcAr(str),'<br/>');
document.write(fDelRddcAr(str, true),'<br/>');
document.write(fDelRddcAr(str, true, 2),'<br/>');
document.write(fDelRddcAr(str1),'<br/>');
document.write(fDelRddcAr(str1, true),'<br/>');
document.write(fDelRddcAr(str1, true, 2),'<br/>');
document.write(fDelRddcAr(str2),'<br/>');
document.write(fDelRddcAr(str2, true),'<br/>');
document.write(fDelRddcAr(str2, true, 2),'<br/>');
function fDelRddcAr (_ar, _order, _num){
var temp = '';
var ='$$#@$%$%#';
_ar=_ar.join(); ///.*?\$|.*?$/g
var _re=new RegExp('.*?'+.replace(/(.)/g,'\\$1')+'|.*?$','g');
var _re_=new RegExp(.replace(/(.)/g,'\\$1')+'$');
_ar.replace(_re,function(){
if(temp.indexOf(arguments[0]) == -1) temp += arguments[0];
}
);
temp=temp.replace(_re_,'').split();
if(_order){
temp=temp.sort();
if(_num)temp=fOrderAr(temp, _num);
}
function fOrderAr(_ar, pram){
if(pram){
switch(pram){
case 1: return _ar.sort(function(a, b){return a-b});
case -1: return _ar.sort(function(a, b){return b-a});
default: return _ar.sort();
}
} else { return _ar.sort(); }
}
return temp;
} // shawl.qiu code
//]]>
</script>
((\b\d+:\d+\b)(,(?!\2\b)\b\d+:\d+\b)+),\2
替换成
$1代码:
// 正则表达式
var re = /((\b\d+:\d+\b)(,(?!\2\b)\b\d+:\d+\b)+),\2/g;
var txt = " 1:2,1:3,1:4,1:5,2:3,2:4,3:5,1:2,1:4,2:3,1:2,1:3,1:2,12:1,12:21,12:1,102:1,102:130,102:1";// 验证是否刚好匹配
while( re.exec(txt) != null)
{
txt = txt.replace(re, "$1");
}alert(txt);测试页面:(推荐)
http://www.regexlab.com/zh/replshop.asp?pat=%28%28%5Cb%5Cd%2B%3A%5Cd%2B%5Cb%29%28%2C%28%3F%21%5C2%5Cb%29%5Cb%5Cd%2B%3A%5Cd%2B%5Cb%29%2B%29%2C%5C2&rto=%241&txt=%201%3A2%2C1%3A3%2C1%3A4%2C1%3A5%2C2%3A3%2C2%3A4%2C3%3A5%2C1%3A2%2C1%3A4%2C2%3A3%2C1%3A2%2C1%3A3%2C1%3A2%2C12%3A1%2C12%3A21%2C12%3A1%2C102%3A1%2C102%3A130%2C102%3A1
((\b\d+:\d+\b)(,(?!\2\b)\b\d+:\d+\b)*),\2
修改代码如下:
<script language="JavaScript">
<!--
var str = "1:2,1:3,1:4,1:5,2:3,2:4,3:5,1:2,1:4,1:400,101:455,2:3,1:2,1:3,1:2,12:1,12:21,12:1,102:1,102:130,102:1";
var strDelSame = ",";
str.replace(/\d+:\d+(?=[\,|$])/g,function(){
if(strDelSame.indexOf(","+arguments[0]+",") == -1)
strDelSame += arguments[0]+",";
});
document.write(strDelSame);
//-->
</script>
当
str = 1:2,1:3
输出结果为,1:2, (?=[\,|$])这里的问题不过看起来没有问题,忽忽,初学不懂,猜测来看应该是有了/g属性后$就不让用了?
str.replace(/(\d+:\d+)\,?/g, function () {
if(strDelSame.indexOf(","+arguments[1]+",") == -1)
strDelSame += arguments[1]+",";
改成这样就没有问题了。。
^o^
*/
function formatStrng(val) {
var nstrng = ",";
val.replace(/,?(\d+:\d+:[^,]+)/g, function() {
if(nstrng.indexOf("," + arguments[1] + ",") == -1)
nstrng += arguments[1] + ",";
});
return nstrng.substring(1, nstrng.length - 1);
}
var str = "1:2:南澳,1:3:大亚湾,1:4:杨梅水库,1:5:未知,1:2:南澳,1:2:南澳,1:5:未知,1:4:杨梅水库";
str = formatStrng(str);
document.write(str);
</script>
只要 南澳这种东西里面没有,就不会有问题。