日期:2014-05-18  浏览次数:20735 次

3个和正则有关(字符串处理)的小问题
1对字符串做一些处理,比如我想给某些词加上链接,是这样写的,
content=content.replaceAll("结婚", "<a href='http://www.xxx.com'>结婚</a>");

现在我碰到了这样的问题,就是某个图片的alt属性中有结婚这个词,结果通过这种变换以后,就不能正常显示图片了。

<img src="xxx.gif" alt="结婚新娘图">

变成了<img src="xxx.gif" alt="<a href='http://wwww.xxx.com'>结婚</a>新娘图">
这显然是不对的,如何在jsp里面能达到不改变图片,而只是正文中的变换

2.我想同时给结婚  和 结婚用品做关键词加链接处理,要求就是如果碰到 结婚用品4个子连在一起,就把这4个字作为整体来加<a...>结婚用品</a>,否则才是<a...>结婚</a>,但通过上面的处理,会变成<a...>结婚</a>用品,或者<a...><a...>结婚</a>用品</a>,而不是我想要的结果,谢谢

------解决方案--------------------
写了一个通用的,不过还是不能在正文里加图片


HTML code

<script>
var keywords=[];//要替换的部分
var replaces=[];//替换成什么
var signs=[];//特定标记,不用管它

keywords[0]=/结婚用品/g;
keywords[1]=/结婚/g;

replaces[0]="<a href='http://www.sina.com.cn'>结婚用品</a>";
replaces[1]="<a href='http://www.163.com'>结婚</a>";

function convert(){
    var contentValue=content.innerHTML;
    
    //设置signs,并替换为signs
    for(var i=0;(e=keywords[i]);i++){
        signs[i]="thePartWhichWillBeReplace"+i;
        contentValue=contentValue.replace(keywords[i],signs[i]);
    }

    for(var i=0;(e=signs[i]);i++){
        while(contentValue.indexOf(signs[i])>=0){
            contentValue=contentValue.replace(signs[i],replaces[i]);
        }
    }

    content.innerHTML=contentValue;
}
</script>

------解决方案--------------------
JScript code

<script type="text/javascript">
var a='aaabaa<img src="xxx.gif" alt="aaabaa">aaabaa<img src="xxx.gif" alt="aaabaa">aaabaa<Span>ssss<Span>ssss</Span>aaabaa</Span>'
alert(a.replace(/(^|>)([^>]*?)aaab([^>]*?)(^|<)/gi,"$1$2mm$3$4"))
</script>