2

Htmlタグを除いて、各コメントの文字をカウントするスクリプトがあります。

しかし、私のコメントにåäöÅÄÖ(スウェーデン語の文字)が含まれていることは考慮されていません。では、これを編集して正規表現変数からこれらを「除外」するにはどうすればよいですか?(コメントが「Hejdå!」の場合、結果は7ではなく6になります。)

これが必要な理由は長い話です。ここでの問題は式にあり、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 に答える