2

我有一个脚本可以计算我的每条评论中的字符,不包括任何 Html 标签。

但它没有考虑到我的评论包含åäöÅÄÖ(瑞典字母)。那么如何编辑它以从regexp变量中“排除”这些?(如果评论是“Hej då!”,结果是 6,而不是 7。)

为什么我需要这个说来话长,这里的问题在于表达式,而不是我可以使用 CSS 并设置最大高度和溢出。:)

// check if comments are too long
$("ol li p").each(function() {
 var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi;
 var count = $(this).html().replace(regexp,"").length;
 if ( count >= 620 ) {
  $(this).parent().addClass("too-big-overflow");
 };
});
4

2 回答 2

4

这里不需要使用正则表达式。这应该有效:

$("ol li p").each(function() {
    var count = $(this).text().length;
    if ( count >= 620 ) {
        $(this).parent().addClass("too-big-overflow");
    }
});
于 2009-09-06T17:52:47.073 回答
1

这有效,但包括任何和所有空白

$("ol li p").each(function() {
    var count = $(this).text().length;
    if ( count >= 620 ) {
        $(this).parent().addClass("too-big-overflow");
    }
});

正如有人向我指出的那样,上面的这个脚本适用于瑞典字母,尽管它包含空格。为了避免这种情况,并且作为瑞典文本的替代方案,我最终使用了下面的这个脚本。它首先去除 html,然后使用 text().length 和 RegEx 来包含所有常见的瑞典字母,以及典型的代码字母,如{ [ ( ) ] }如果您的评论包含很多这样的内容。

$("ol li p").each(function() {
    // This removes any tags inside the text like <abbr>, <span> etc
    var regexp = /<[^>]+>/gi;
    var strippedHtml = $(this).text().replace(regexp,"");
    // This counts all common (swedish) letters used, not including the white-space in your html
    lettersCounted = strippedHtml.match(/[a-z0123456789åäö_,éèáà´`'~ ½§£@&%#"-:;<>!\[\]\\\^\$\.\|\?\*\+\(\)\{\}]/gi).length;
    if ( lettersCounted >= 620 ) {
        $(this).parent().addClass("too-big-overflow");
    };
});
于 2009-09-08T11:15:08.847 回答