我想要一个正则表达式,它将用...替换长网址,例如,
我传入一个带有url的字符串,即
<a href="http://www.abc.com/thisSite/myPages/blah-blah-blah.aspx">http://www.abc.com/thisSite/myPages/blah-blah-blah.aspx</a>
应转换为
<a href="http://www.abc.com/thisSite/myPages/blah-blah-blah.aspx">http://www.abc.com/th....</a>
任何帮助都会得到满足。
答案 0 :(得分:1)
Jquery的
$('a').each(function(){
var text = $(this).text();
if (text.length > 20 && text.substr(0,7) == "http://"){ // it looks like a URL and it's long
text = text.substr(0,20) + '…';
$(this).text(text);
}
});
普通的javascript
var links = document.getElementsByTagName('a');
for (var i = 0;i=links.length-1;i++) {
var text = links[i].innerHTML;
if (text.length > 20 && text.substr(0,7) == "http://"){ // it looks like a URL and it's long
text = text.substr(0,20) + '…';
links[i].innerHTML = text;
}
}
我不知道这是否有效,因为我是从头脑中写下来的。 玩得开心。
答案 1 :(得分:1)
基于this solution,您可以执行以下操作:
String.prototype.trunc =
function(n,useWordBoundary,wordChar){
if (!wordChar) wordChar = ' ';
var toLong = this.length>n,
s_ = toLong ? this.substr(0,n-1) : this;
s_ = useWordBoundary && toLong ? s_.substr(0,s_.lastIndexOf(wordChar)) : s_;
return toLong ? s_ + '…' : s_;
};
然后将其应用于显示链接的锚点:
var maxLength = 40;
var aElements = document.getElementsByTagName('a'), _text, _param;
var aLen = aElements.length;
for (var i=0; i<aLen; i++) {
_text = aElements[i].innerHTML;
// remove url params
if (0 <= (_param = _text.indexOf('?'))) {
_text = _text.substr(0, _param - 1);
}
if (0 == _text.indexOf('http://') && _text.length > maxLength) {
_text = _text.trunc(maxLength);
// _text = _text.trunc(maxLength, true, '/');
}
aElements[i].innerHTML = _text;
}
答案 2 :(得分:0)
您需要使用以下代码
<script>
var cutOffAt = 20;
var anchorRef = getAnchorFromDom();
var text = anchorRef.innerHtml;
if(text.length > 20) {
anchorRef.innerHtml = text.substr(0, cutOffAt);
}
function getAnchorFromDom()
{
// provide your own logic here
return document.getElementsByTagName('a')[0];
}
</script>
未测试。
答案 3 :(得分:0)
在这里我认为你其实想要使用正则表达式并且从未提及过jquery .. headlap ......
var s = '<a href="http://www.abc.com/thisSite/myPages/blah-blah-blah.aspx">http://www.abc.com/thisSite/myPages/blah-blah-blah.aspx</a>';
var t = s.replace(/(<a [^>]*>)([^<]{1,20})([^<]*)(<\/a>)/, function(str, p1, p2, p3, p4) { return p1 + p2 + (p3.length ? '...' : '') + p4; });
document.write(t);