是这个意思吗?
str.replace(/(上海)[^市]/gi, '<span name...><a...>$1</a></span>')
str.replace(/(上海)[^市]/gi, '<span name...><a...>$1</a></span>')
解决方案 »
- 在一个相对定位的DIV中,怎么判断某位置是否存在一绝对定位的元素?
- 怎么用javascript读取TCP端口?
- js实现web打印控制
- 各位CSDN的兄弟们,有时间看一下这个贴子。谢谢
- javascript如何解压服务器端压缩的字符串?
- 你见过的JS常见框架有哪些?
- 动态创建合并后的table
- 如何从window.open的页面提交数据库返回到textarea来?就像动网的多功能编辑器一样。在线等待!
- 使用object.filters.alpha.opacity报错该怎么办?
- 救命呀!这段代码有什么问题呀?我找不出来了!
- 嘿嘿,今天好困呢,给大家出个小题缓解下疲劳。。
- 帮忙看看js正则表达式中怎样限制以下两个字符
var strng = "上海市,上海等,<a>上海等<\/a>";
var key = ["上海市", "上海"]
var reg = new RegExp("(<a>(?:.|\\n|\\r)+?<\\/a>)|(" + key.join("|") + ")", "ig");
var j = strng.replace(reg, function (a, b, c) {
return b ? a : "<a newURL>" + a + "<\/a>";
});
alert(j);
</script>
上海市有链接
上海也有链接
而且他们的链接是不同的
第一次替换上海市的时候没问题
第二次替换上海的时候就把有链接的也给替换了,如下:
<span name...><a href=...><span name...><a href=...>上海</a></span>市</a></span>
str.replace(/(上海)(<[^>]+>)*市/gi, '')
不过还得具体问题具体看
正在研究中...
var reg = new RegExp("(<a>(?:.|\\n|\\r)+?<\\/a>)|(" + key.join("|") + ")", "ig");
把a换成span就可以了。。
只不过这个不支持嵌套。。
测试成功!!!
不过还不知所以然,
下去仔细研究,
什么贪婪的,看到就头痛,呵呵
这就给分
知道了,不用span了,把事件都写道a里面就好了再次谢谢
new RegExp("(<a>(?:.|\\n|\\r)+?<\\/a>)|(" + key.join("|") + ")", "ig");
展开就是
/<a>(?:.|\n|\r)+?<\/a>|(上海市|上海)/ig;因为这个用的是或运算。所以。。把<a>..</a>的匹配放到前面它就会优先匹配<a>..</a>的内容。。
即使里面包含关键字也会匹配出来。。如果匹配不到则会继续匹配关键字,然后把匹配的关键字捕获出来,加个链接就可以了。。^o^
这个来说的话。。
首先如果是<a>w__关键字__c</a>就不会替换。如果改成能替换的reg还要大改下。。
还有。。
这个只考虑了在<*>后面的关键字。。
就是说
<*>关键字,关键字</*>
第二个就不会被替换。。
关键字,关键字
这个,全部都不被替换
还有如果<a>里套了非<a>的标记也会被替换。。^o^