1

基本上我想创建一个函数,它将在字符串中搜索锚标记,当它找到一个时,计算它们之间的字符并返回该数字。我正在为一个正在计算 textarea 中字符数的编辑器执行此操作,因为 textarea 有用户可以输入的限制,我不希望链接中的字符计入该总数。

如果我在文本区域中有这个:

This is what it looks like here <a href="http://www.bmhl.com">Placeholder</a>.  Please click the link to go to the page.

锚点之前有 32 个字符,中间有 11 个字符,之后有 42 个字符,总共 85 个。在锚点标签中有 34 个字符,我不想计算在内。

希望这是有道理的。

4

5 回答 5

2

为什么你只想剥离锚标签?你可能想看看这个问题。这是一个修改后的答案,用于返回一些 html 代码的长度。

function plainTextLength(html) {
    var tmp = document.createElement("div");
    tmp.innerHTML = html;
    var txt = tmp.textContent||tmp.innerText;
    return txt.length;
}

这也适用于您上面的示例。

于 2013-04-02T18:15:41.313 回答
0

如果输入应该是一个字符串:

function getLength (string) {
     return string.match(/<a[^>]+>([^<]+)<\/a>/)[1].length
} 
于 2013-04-02T18:04:56.663 回答
0

不完全确定您需要什么,但此函数为您的示例文本返回 11:

function count(textareaInput) {  
  var count = 0;  
  $(textareaInput).filter('a').each(function() { 
    count += $(this).text().length;
  });
  return count;
}
于 2013-04-02T18:12:10.527 回答
0

你可以使用这样的东西:

$('textarea').keyup(function() {
    $('#count').text( this.value.replace(/<\/?a\s*[^>]*>/g, '').length );
});

请参阅工作演示

于 2013-04-02T18:20:37.643 回答
-1
var a = document.getElementById('link');
var b = a.outerHTML.length - a.innerHTML.length;

我没有测试它,但它可能会工作。

于 2013-04-02T18:07:28.717 回答