<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>
解决方案 »
- jquery 求指点 如何用 if 来控制div的show和hide,求指点
- 使用jQuery的tablesorter设置表头样式
- 急!!!!
- javascript读取浏览器(IE)的历史记录
- 哪位高手帮帮忙,感激不尽!
- appendchild is not function ?
- 梅花雪日历控件的问题,怎样防止第二次调用默认的日期与第一次调用的日期一样
- 多个标签点击都是促发同一个函数,那可以怎么写
- 请问怎么实现在网页中进行视频播放
- 引用了jQuery后,其他的JS不启作用,神马情况。。郁闷啊,,,,
- 我想取得<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.