要素に文字列が含まれているかどうかをチェックします。

私はひどいマークアップを生成するフォームモジュールを備えたCMSを持っているので、スタイルを作ることは絶対に不可能です。フォームオブジェクトと要素は、不本意な量のテーブル、行、セルに入れ子になっています。

私はjavascriptを介して必要なすべての要素をフィルタリングし、配列に配置し、これらの要素を使用して新しいフロントエンド開発者にやさしいマークアップを作成しています。

入力フィールド、凡例、およびフィールドセットは問題ありませんが、ラベルをフィルタリングする際に問題があります。ラベルは <tr> <td> Label </td> </tr><tr> <td> Label td> </tr> - これらをフィルタリングして配列に入れる必要があります。

私のtdが純粋な文字列を含んでいて、正規表現を使用する以外の入力や他のhtml要素ではないかどうかを確認する簡単な方法はありますか?

var regex = new RegExp(???);
jQuery("td").each( function() {
    if(jQuery(this).has("b") || regex.test(jQuery(this).text()))
    {
       //Do stuff here
    }
}

前もって感謝します

0

2 答え

この正規表現を試すことができます

var regex = new RegExp('^[^<]*$').

これは、 td テキストのどこにでも開始htmlタグがない場合に一致します。空の文字列と一致させたくない場合は、 * の代わりに + を使用します。

説明

"^" +      //Assert position at the beginning of the string
"[^<]" +   //Match any character that is NOT a “<�����������������������������������������������
2
追加された
私はこのアプローチを試してみます - それはもっとシンプルに思え、私が探していたものでした。
追加された 著者 MadsMadsDk,

これは、子を持たないか、または太字のタグである単一の子を持つすべてのtdを返します。

$('td').filter(function() {
    var children = $(this).children();
    return children.length == 0 
              || (children.length == 1 && children.first().is('b'))
});

http://jsfiddle.net/t9bMG/

実際にテキストを持つ要素だけを返すには、これを使うことができます:

$('td').filter(function() {
    var t = $(this), children = t.children();
    return t.text().length > 0 
               && (children.length == 0 
                    || (children.length == 1 && children.first().is('b')))
})

http://jsfiddle.net/t9bMG/1/

2
追加された
私の編集を参照してください。 2番目の例が必要です。
追加された 著者 Richard Dalton,
Np、あなたの質問は明示的に '正規表現を使用する以外の'と述べました;)
追加された 著者 Richard Dalton,
私は子供も弦もないtdがたくさんあるので、tdに実際に文字列が含まれていることを確認する必要があります。
追加された 著者 MadsMadsDk,
これも同様に動作し、許容可能な答えですが、正規表現の方が簡単だと思います。しかし、ありがとう! :)
追加された 著者 MadsMadsDk,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript