日期:2014-05-16  浏览次数:20361 次

关于js负向预查的一个问题
需要解决这样一个问题:
在js中:要把英文后面跟的省略号换一种英文字体(就是把…放到底下类似于...[三个英文句号])。
我想的解决办法是:

var testStr = "<p style='font-family:宋体;'>呵呵……aaaa…aaaa…呵呵……</p>";
var pattern = /…(?!…)/ig;
var replaceStr = "<span style='font-family:arial;'>…</span>";
testStr = testStr.replace(pattern,replaceStr);
document.write(testStr);

尝试了一下,不行。会把……的一半换掉,于是想把pattern换成
var pattern = /(?!…)…(?!…)/ig;结果,还是不行。

然后想到这个[^]试了一下var pattern = /[^…]…(?!…)/ig;
依然不行。。。各种百度,类似的问题基本没有。。于是第一次上csdn发个贴。

当然这个问题有别的解决思路:
可以用split切一下,然后判断中文后面加……英文后面加
<span style='font-family:arial;'>…</span>

但是我想我最开始的思路应该是可以实现的把,哪位大神来指点一二,万分感谢!

貌似在CSDN这个编辑器里……都是在下面的啊。。。。。。。。。
js 负向预查

------解决方案--------------------
var testStr = "<p style='font-family:宋体;'>呵呵……aaaa…aaaa…呵呵……</p>";
var pattern = /…(?!…)/ig;
var replaceStr = "<span style='font-family:arial;'>…</span>";
testStr = testStr.replace(pattern,replaceStr);
document.write(testStr);
testStr = testStr.replace(/…<span style='font-family:arial;'>…<\/span>/g, '……');
document.write(testStr);
------解决方案--------------------
var pattern = /([a-z])…/ig;
var replaceStr = "<span style='font-family:arial;'>…</span>";
testStr = testStr.replace(pattern,RegExp.$1+replaceStr);

或者
testStr = testStr.replace(pattern,function($0,$1){
console.log($1);
return $1+replaceStr;
});