<script language="javascript">
var a="6,12,26,6,6,16,6";
var str="6"
var b=new RegExp(",("+str+",)+","g");
var c=(","+a+",").replace(b,",").replace(/(^,|,$)/g,""); //这个错误,结果为"12,21"
alert(c)
</script>
解决方案 »
- 问1个简单的JQuery的animate的问题
- 请教一个关于Extjs的问题
- 高手救命啊,帮帮我看看这是怎么回事???
- 请教:字符串插入和修改颜色
- 求 qq 浮动脚本, 支持 XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
- 可否改造eWebEditor不用模式窗口,改为层的方式?
- 求一段替换文本的脚本。
- 项目中遇到疑难问题,请大家帮我解决一下,谢谢各位!
- 不提交form怎样刷新本页??
- jquery click 隐藏显示的问题
- 我想取得<iframe>里的一个div的值,代码怎么写?我要ie和ff通用的
- 请教各位高手一个非常牛X的问题 。100分相送
这个重新构造一个字符串,也就是前后都加上一个逗号,也就是var b=","+a+",";
这样就可以匹配了
<script>
var a = "6,12,26,6,16,6";
a = "," + a + ",";
var c = a.replace(/,6,/g,",");
c = c.replace(/^,+|,+$/g,"");
alert(c);
</script>
var removeKey = function () {
return (','+ arguments[0]).replace(
new RegExp(
',(?:' + arguments[1].replace(/,/g, '|') + ')(?=,|$)', 'g'
)
, ''
).substr(1);
};
alert(
removeKey('612,26,12,6,16,6', '12,6') //把串中所有12和6都k掉
);
</script>
,key,
会忽略连续的
因为
后面的,占用了字符
所以剩下的字符是key,而不是,key,了..
:DHB前辈的正确...
str = str.replace(re,"").replace(/,{2,}/g,",");
var re = new RegExp("\\b"+key+",?","ig");
str = str.replace(re,"");
123-456
这里
(开始和1) (3和-) (-和4) (6和结束)
之间就是字符和非字符的界限 都可以用\b来匹配这个交界点
这个东西确实很实用,但确经常被忽略。
我也是最近优化数据采集引擎时才发现原来忽略了一个这么重要的符号。例:要区分以下内容时就要用到它了
<a href="xxxx">cccc</a>
<area href="xxxx"/>
<a>dddd</a>
以前为了区分前2种我是这么写的
<a\s[^>]*>
但第三种情况就无法匹配
后来用
<a\b[^>]*>
就没问题了
用\b也不错不过.要两边都有的
若是
,?
则会出现
key[number]
中的key被K掉...
所以要
\bkey\b
然后在处理,
或者直接这样<script>
var str = '126,26,12,6,16,6,12'
var re = new RegExp(",??\\b"+12+"\\b,??","ig");
str = str.replace(re,"");
alert(str);
</script>
6楼的是不是可以这样优化一下.
<script type="text/javascript">
var removeKey = function () {
return (','+ arguments[0]).replace(
new RegExp(
',(?:' + arguments[1] + ')(?=,|$)', 'g' //去掉这里的替换
)
, ''
).substr(1);
};
alert(
removeKey('612,26,12,12,6,6,6,16,6', '12|6') //把串中所有12和6都k掉
);
</script>其他的好象多少都有点问题,因为似乎没考虑到两个连续的6.