急》》求一个正则表达式

yimengqi55 2011-11-23 02:41:18
有一个字符串
DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,DP66,123,176_1322030188335,254,181_1322030188338,183,185_1322030188342,199,217,218_1322030188348,DP61,DP68,197,201,202,DP70,197_1322030188362,236_1322030188364,DP71,197_1322030188367,218_1322030188369,189,192,205_1322030188375,206,218_1322030188378,RO66,187,194,RO65,185_1322030188556,193_1322030188558,RO64,182,253,RO62,228,RO61,121,149


我想把里面的带DP 和RO的去掉
比如
DP32,231,235,236
改成
231,235,236
然后把所有的还下划线的后面一截到,这去掉
如 231_1322030188314,232_1322030188314,233_1322030188314,234_1322030188314
改成231,232,233,234

只会出去带DP和RO的数字是要去掉的
DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329
我要的结果是
231,205,198,236
其它的都要去掉


不会正则,求大虾们帮帮忙,,急,
...全文
129 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
峭沙 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yimengqi55 的回复:]

引用 11 楼 axiheyhey 的回复:
小修改了下

JScript code

var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,231';
str = str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*/gi, ''); ……
[/Quote]没怎么调试呵呵,下面这个应该可以了
		var str = 'DP51,DP60,DP63,205,DP64,198,DP65,236_1322034816304,DP66,123,176_1322034816311,254,181_1322034816315,176,176,183,236,176';
str = str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*/gi, ''); // 删字段
str = str.replace(/(^\d+|,\d+)(?=.*\1(?:,|$))/g, ''); // 去重复
alert(str);
yimengqi55 2011-11-23
  • 打赏
  • 举报
回复
呃,忘了结贴了,我的错,
汗,谢谢大家的帮助 ,写的兴奋了,把这给忘了
呵呵
hookee 2011-11-23
  • 打赏
  • 举报
回复
是:
205,198,236,123,176,254,181,183,185,199,217,218,197,201,202,189,192,206
yimengqi55 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 axiheyhey 的回复:]
小修改了下

JScript code

var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,231';
str = str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*/gi, ''); //删……
[/Quote]
很谢谢大家的帮助 ,我只能说,眼花缭乱,各种方法让我难以取舍

很感谢axiheyhey
但是我想说,最后的这个,在去重复的时候,有些没能去掉
这是原始数据
DP51,DP60,DP63,205,DP64,198,DP65,236_1322034816304,DP66,123,176_1322034816311,254,181_1322034816315,183,185_1322034816319,199,217,218_1322034816325,DP61,DP68,197,201,202,DP70,197_1322034816338,236_1322034816339,DP71,197_1322034816343,218_1322034816346,189,192,205_1322034816351,206,218_1322034816355

这是去重复后的
198,236,123,176,254,181,183,185,199,217,218,197,201,202,197,236,197,218,189,192,205,206,218
197出现3次,218出现2次
峭沙 2011-11-23
  • 打赏
  • 举报
回复
小修改了下
		var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,231';
str = str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*/gi, ''); //删字段
str = str.replace(/(?=^|,)([^,]+),(?=.+,\1(?:,|$))/g, ''); //去重复
alert(str);
峭沙 2011-11-23
  • 打赏
  • 举报
回复
		var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,231';
str = str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*/gi, ''); //删字段
str = str.replace(/(?=^|,)([^,]+),(?=.+\1)/g, ''); //去重复
alert(str);
hookee 2011-11-23
  • 打赏
  • 举报
回复

var s = "DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329"
var re =/(DP\d+)|(RO\d+)|(_\d+)/g;
s = s.replace(re, "");
re = /\,+/g
s = s.replace(re, ",")
var a = s.split(",");
var b = [];
for(var i = 0; i<a.length;i++){
if(a[i]!=""){
var f = false;
for(var j=0;j<b.length;j++){
if(b[j]==a[i]){f = true; break;}
}
if(!f) b.push(a[i]);
}
}

s = b.join(",")

alert(s)
峭沙 2011-11-23
  • 打赏
  • 举报
回复
去重的在5楼,再来个纯正则的
		var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329';
alert(str.replace(/(?:DP|RO)[^,]*(?:,|$)|_[^,]*|(?=^|,)([^,]+),(?=.+\1)/gi, ''));
OPPPPOP 2011-11-23
  • 打赏
  • 举报
回复

var str='DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329,DP66,123,176_1322030188335,254,181_1322030188338,183,185_1322030188342,199,217,218_1322030188348,DP61,DP68,197,201,202,DP70,197_1322030188362,236_1322030188364,DP71,197_1322030188367,218_1322030188369,189,192,205_1322030188375,206,218_1322030188378,RO66,187,194,RO65,185_1322030188556,193_1322030188558,RO64,182,253,RO62,228,RO61,121,149';
str+=',';
str=str.replace(/(?:DP|RO)[^,]+,/g,'');
str=str.replace(/([0-9]{3})_[^,]+/g,'$1');
str=str.replace(/,$/,'');
var ss=str.split(',');
var s='';
var k;
var len=ss.length;
LP:
for(var i=0;i<len;i++){
for(var j=i+1;j<len;j++){
if(ss[i]==ss[j]){
continue LP;
}
}
s+=ss[i]+',';
}
s=s.replace(/,$/,'');
alert(s);
yimengqi55 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 axiheyhey 的回复:]
JScript code

var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329';
var arr = str.split(',');
for(var i = 0; i < arr.length; i++){
……
[/Quote]
这个重复的怎么处理啊

[Quote=引用 2 楼 hookee 的回复:]
VBScript code


<%
s = "DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329"

Set re = New RegExp
re.Global = True
re.Pattern = "(DP\d+)|(RO\d+)|(_\d+)"
s = re.Replace(s……
[/Quote]
VB的啊,好像不行的说,我要在JS 里面处理才行
峭沙 2011-11-23
  • 打赏
  • 举报
回复
		function filter(str){
var arr = str.split(',');
for(var i = 0; i < arr.length; i++){
if(/DP|RO/.test(arr[i])){
arr.splice(i, 1);
i--;
}else{
arr[i] = arr[i].replace(/\_.*/, '');
}
}
var ret = arr.join(',').replace(/(?=^\,)([^,]+),(?=.+\1)/g, "");
return ret;
}

var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329';
alert(filter(str));
ruishq 2011-11-23
  • 打赏
  • 举报
回复
var re = /DP\d*,|RO\d*,|_\d*/gi
str = str.replace(re,'')
峭沙 2011-11-23
  • 打赏
  • 举报
回复
		var str = 'DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329';
var arr = str.split(',');
for(var i = 0; i < arr.length; i++){
if(/DP|RO/.test(arr[i])){
arr.splice(i, 1);
i--;
}else{
arr[i] = arr[i].replace(/\_.*/, '');
}
}
alert(arr.join(','));
hookee 2011-11-23
  • 打赏
  • 举报
回复

<%
s = "DP32,231_1322030188314,DP51,DP60,DP63,205,DP64,198,DP65,236_1322030188329"

Set re = New RegExp
re.Global = True
re.Pattern = "(DP\d+)|(RO\d+)|(_\d+)"
s = re.Replace(s, "")
re.Pattern = "\,+"
s = re.Replace(s, ",")
a = Split(s, ",")
Set dic = CreateObject("Scripting.Dictionary")
For i = 0 To UBound(a)
If a(i)<>"" Then
If Not dic.Exists(a(i)) Then dic.Add CStr(a(i)), a(i)
End If
Next
aItem = dic.Items
Set dic = Nothing

s = Join(aItem, ",")

Response.Write s
%>
yimengqi55 2011-11-23
  • 打赏
  • 举报
回复
呃,对了,里面得出的结果 ,会有重复的数据,希望也能去掉

大虾求指点啊!!!!!!

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧