计算P中的字符,保留非拉丁字符

时间:2009-09-06 17:37:48

标签: javascript jquery regex special-characters

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

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

为什么我需要这个是一个很长的故事,这里的问题在于表达式,而不是我可以使用CSS并设置max-height和overflow。 :)

// 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");
 };
});

2 个答案:

答案 0 :(得分:4)

此处无需使用正则表达式。这应该有效:

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

答案 1 :(得分: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");
    };
});
相关问题