0

基本的に、私はこれを持っています:

str.replace(/<p><\/p>|<p>\.<\/p>/g);

内部に何もない、または 3 文字未満のすべての段落を削除しようとしています。正規表現の最初の部分は正しく機能しますが、次のような段落は<p>.</p>削除されません。初心者の質問で申し訳ありません。

4

4 に答える 4

1

タグをいじる必要はありません。ブラウザーは、これらすべての API を提供します。この API は、より高速に実行され、バグやエクスプロイトが発生しにくく、「ブラウザーがフリーズするのはなぜですか?」という煩わしさから解放されます。癖。

var pTags = document.getElementsByTagName("p");

それでおしまい。ページ内のすべてのタグは、変数 pTags 内のドキュメント要素の配列の一部になりました。

次に、指定された pTags[i] の内部を調べて、次の方法で削除できます。

pTags[i].parentNode.removeChild(pTags[i]);

もちろん、これに DOM APIを使用する方法は他にもあります。

于 2012-11-17T19:58:57.567 に答える
1

次の正規表現を使用します。

<p>.{0,2}</p>
   ^ any character, 0 - 2 times (you said less than 3)

.as をエスケープすると\.、リテラルに一致し.ます。

ここにデモンストレーションがあります:http://jsfiddle.net/yQ5pu/1/

于 2012-11-17T19:40:14.177 に答える
1

この正規表現を試してください。/<\s*(p|P)[^>]*>([^<.]{0,3}|\..{1,2}|.{1,2}\.)<\s*\/(p|P)\s*>/g これは<p>大文字と小文字を区別しないタグに一致し、段落は異なる属性を持つことができます。

例:

var str = "<p>test</p><p>t</p><P>tes</P><p class=\"someclass\">s</p>< p >some long text</p>";
str.replace(/<\s*(p|P)[^>]*>([^<.]{0,3}|\..{1,2}|.{1,2}\.)<\s*\/(p|P)\s*>/g, '');

jsfiddle の例: http://jsfiddle.net/Tkwk5/3/

于 2012-11-17T19:55:01.993 に答える
0
<p>[0-9A-Za-z]{0,2}</p>

3 回未満の場合は、段落 {0,2} の間の任意の文字または数字。

于 2012-11-17T19:44:29.100 に答える